From fc8b22b7507b842370dab4cdddf1178879d61c04 Mon Sep 17 00:00:00 2001 From: VasilevNStas Date: Sun, 9 Aug 2026 23:57:16 +0300 Subject: [PATCH 1/3] feat(#566): add invalid-name-notation lint --- .../org/eolang/funcs/special-name.xsl | 2 +- .../lints/names/invalid-name-notation.xsl | 34 +++++++++++++++++++ .../motives/names/invalid-name-notation.md | 23 +++++++++++++ .../resources/org/eolang/lints/canonical.eo | 2 +- .../allows-good-names.yaml | 15 ++++++++ .../allows-special-names.yaml | 19 +++++++++++ .../allows-throwing-test-name.yaml | 14 ++++++++ .../catches-invalid-names.yaml | 19 +++++++++++ 8 files changed, 126 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/org/eolang/lints/names/invalid-name-notation.xsl create mode 100644 src/main/resources/org/eolang/motives/names/invalid-name-notation.md create mode 100644 src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-good-names.yaml create mode 100644 src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-special-names.yaml create mode 100644 src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-throwing-test-name.yaml create mode 100644 src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/catches-invalid-names.yaml diff --git a/src/main/resources/org/eolang/funcs/special-name.xsl b/src/main/resources/org/eolang/funcs/special-name.xsl index 6386eccdc..c23dc93ac 100644 --- a/src/main/resources/org/eolang/funcs/special-name.xsl +++ b/src/main/resources/org/eolang/funcs/special-name.xsl @@ -7,6 +7,6 @@ - + diff --git a/src/main/resources/org/eolang/lints/names/invalid-name-notation.xsl b/src/main/resources/org/eolang/lints/names/invalid-name-notation.xsl new file mode 100644 index 000000000..fdee43b62 --- /dev/null +++ b/src/main/resources/org/eolang/lints/names/invalid-name-notation.xsl @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + warning + Object name + + must match the regular expression [a-z]+(-[a-z]+)* + + + + + diff --git a/src/main/resources/org/eolang/motives/names/invalid-name-notation.md b/src/main/resources/org/eolang/motives/names/invalid-name-notation.md new file mode 100644 index 000000000..2674d9d7e --- /dev/null +++ b/src/main/resources/org/eolang/motives/names/invalid-name-notation.md @@ -0,0 +1,23 @@ +# Invalid name notation + +The name of any object must match the regular expression `[a-z]+(-[a-z]+)*`. +Basically, it must follow kebab-case notation, using only Latin letters. +No digits, no underscores, no uppercase characters. + +Incorrect: + +```eo +# App. +[] > mainApp + foo > x1 + bar > y_ +``` + +Correct: + +```eo +# App. +[] > main-app + foo > x + bar > y +``` diff --git a/src/test/resources/org/eolang/lints/canonical.eo b/src/test/resources/org/eolang/lints/canonical.eo index 13781efc4..24415a45a 100644 --- a/src/test/resources/org/eolang/lints/canonical.eo +++ b/src/test/resources/org/eolang/lints/canonical.eo @@ -16,7 +16,7 @@ * x.put 2 while - x.as-number.lt 6 > [i1] >> + x.as-number.lt 6 > [i] >> [i] >> seq > @ * diff --git a/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-good-names.yaml b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-good-names.yaml new file mode 100644 index 000000000..044f9a084 --- /dev/null +++ b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-good-names.yaml @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2026 Objectionary.com +# SPDX-License-Identifier: MIT +--- +sheets: + - /org/eolang/lints/names/invalid-name-notation.xsl +asserts: + - /defects[count(defect[@severity='warning'])=0] +ignore-schema: true +document: | + + + + + + diff --git a/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-special-names.yaml b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-special-names.yaml new file mode 100644 index 000000000..8364d7897 --- /dev/null +++ b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-special-names.yaml @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2026 Objectionary.com +# SPDX-License-Identifier: MIT +--- +sheets: + - /org/eolang/lints/names/invalid-name-notation.xsl +asserts: + - /defects[count(defect[@severity='warning'])=0] +ignore-schema: true +document: | + + + + + + + + + + diff --git a/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-throwing-test-name.yaml b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-throwing-test-name.yaml new file mode 100644 index 000000000..537b49cb4 --- /dev/null +++ b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-throwing-test-name.yaml @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2026 Objectionary.com +# SPDX-License-Identifier: MIT +--- +sheets: + - /org/eolang/lints/names/invalid-name-notation.xsl +asserts: + - /defects[count(defect[@severity='warning'])=0] +ignore-schema: true +document: | + + + + + diff --git a/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/catches-invalid-names.yaml b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/catches-invalid-names.yaml new file mode 100644 index 000000000..7e389e5a1 --- /dev/null +++ b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/catches-invalid-names.yaml @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: Copyright (c) 2016-2026 Objectionary.com +# SPDX-License-Identifier: MIT +--- +sheets: + - /org/eolang/lints/names/invalid-name-notation.xsl +asserts: + - /defects[count(defect[@severity='warning'])=3] + - /defects/defect[@line='2'] + - /defects/defect[@line='3'] + - /defects/defect[@line='4'] +ignore-schema: true +document: | + + + + + + + From 835d0ff4eb04c76423708954ec1dfe7ad6821d31 Mon Sep 17 00:00:00 2001 From: VasilevNStas Date: Mon, 10 Aug 2026 00:34:09 +0300 Subject: [PATCH 2/3] fix(#566): yamllint line length --- .../single/invalid-name-notation/allows-throwing-test-name.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-throwing-test-name.yaml b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-throwing-test-name.yaml index 537b49cb4..d8b0aa689 100644 --- a/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-throwing-test-name.yaml +++ b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/allows-throwing-test-name.yaml @@ -1,5 +1,6 @@ # SPDX-FileCopyrightText: Copyright (c) 2016-2026 Objectionary.com # SPDX-License-Identifier: MIT +# yamllint disable rule:line-length --- sheets: - /org/eolang/lints/names/invalid-name-notation.xsl From 9f51cecb2bf9a9291fce52d736816ef4beaa1f8e Mon Sep 17 00:00:00 2001 From: VasilevNStas Date: Sun, 16 Aug 2026 15:33:52 +0300 Subject: [PATCH 3/3] fix(#566): use EO input in catches pack per review --- .../catches-invalid-names.yaml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/catches-invalid-names.yaml b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/catches-invalid-names.yaml index 7e389e5a1..a709e0aa4 100644 --- a/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/catches-invalid-names.yaml +++ b/src/test/resources/org/eolang/lints/packs/single/invalid-name-notation/catches-invalid-names.yaml @@ -8,12 +8,8 @@ asserts: - /defects/defect[@line='2'] - /defects/defect[@line='3'] - /defects/defect[@line='4'] -ignore-schema: true -document: | - - - - - - - +input: | + [] > main + x1 > x1 + xApp > xApp + x_snake > x_snake