From 76dff7b42e87fe9622d301e9eb8390b8afb49178 Mon Sep 17 00:00:00 2001 From: VasilevNStas Date: Sun, 9 Aug 2026 23:57:16 +0300 Subject: [PATCH 1/2] 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 0ef762ca6..f0929ac80 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 8faa60c6037d5a731f6e00594edfc6b755fa830a Mon Sep 17 00:00:00 2001 From: VasilevNStas Date: Mon, 10 Aug 2026 00:34:09 +0300 Subject: [PATCH 2/2] 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