From 6067ccdca076e6800a8acb3c15c6110b45ebb21b Mon Sep 17 00:00:00 2001 From: David RACODON Date: Tue, 6 Jun 2017 11:17:55 +0200 Subject: [PATCH] Fix #29 Add missing SCSS modulo operator (%) --- .../src/main/java/org/sonar/css/parser/LexicalGrammar.java | 1 + .../main/java/org/sonar/css/parser/scss/ScssGrammar.java | 2 -- .../sonar/plugins/css/api/tree/scss/ScssOperatorTree.java | 1 + .../org/sonar/css/parser/scss/ScssOperatorTreeTest.java | 6 +++--- .../css/parser/scss/ScssVariableDeclarationTreeTest.java | 2 ++ 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/css-frontend/src/main/java/org/sonar/css/parser/LexicalGrammar.java b/css-frontend/src/main/java/org/sonar/css/parser/LexicalGrammar.java index 0375779e..d08ccd2d 100644 --- a/css-frontend/src/main/java/org/sonar/css/parser/LexicalGrammar.java +++ b/css-frontend/src/main/java/org/sonar/css/parser/LexicalGrammar.java @@ -643,6 +643,7 @@ private static void scss(LexerlessGrammarBuilder b) { "-", "/", "*", + "%", "==", "!=", "=", diff --git a/css-frontend/src/main/java/org/sonar/css/parser/scss/ScssGrammar.java b/css-frontend/src/main/java/org/sonar/css/parser/scss/ScssGrammar.java index fad556ea..a3015f4c 100644 --- a/css-frontend/src/main/java/org/sonar/css/parser/scss/ScssGrammar.java +++ b/css-frontend/src/main/java/org/sonar/css/parser/scss/ScssGrammar.java @@ -77,7 +77,6 @@ public Tree ANY() { BRACKET_BLOCK(), URI(), FUNCTION(), - PSEUDO_SELECTOR(), PERCENTAGE(), DIMENSION(), NUMBER(), @@ -109,7 +108,6 @@ public Tree ANY_WITHOUT_COMMA_SEPARATED_LIST() { BRACKET_BLOCK(), URI(), FUNCTION(), - PSEUDO_SELECTOR(), PERCENTAGE(), DIMENSION(), NUMBER(), diff --git a/css-frontend/src/main/java/org/sonar/plugins/css/api/tree/scss/ScssOperatorTree.java b/css-frontend/src/main/java/org/sonar/plugins/css/api/tree/scss/ScssOperatorTree.java index d2fea0f0..7cc88888 100644 --- a/css-frontend/src/main/java/org/sonar/plugins/css/api/tree/scss/ScssOperatorTree.java +++ b/css-frontend/src/main/java/org/sonar/plugins/css/api/tree/scss/ScssOperatorTree.java @@ -35,6 +35,7 @@ enum OPERATOR { MINUS("-"), TIMES("*"), DIV("/"), + MODULO("%"), EQUALS("="), DOUBLE_EQUALS("=="), NOT_EQUALS("!="), diff --git a/css-frontend/src/test/java/org/sonar/css/parser/scss/ScssOperatorTreeTest.java b/css-frontend/src/test/java/org/sonar/css/parser/scss/ScssOperatorTreeTest.java index 7adb597a..b9e33699 100644 --- a/css-frontend/src/test/java/org/sonar/css/parser/scss/ScssOperatorTreeTest.java +++ b/css-frontend/src/test/java/org/sonar/css/parser/scss/ScssOperatorTreeTest.java @@ -59,9 +59,9 @@ public void scssOperator() { assertThat(tree.type()).isEqualTo(ScssOperatorTree.OPERATOR.OR); assertThat(tree.operator().text()).isEqualTo("or"); - tree = checkParsed(" or"); - assertThat(tree.type()).isEqualTo(ScssOperatorTree.OPERATOR.OR); - assertThat(tree.operator().text()).isEqualTo("or"); + tree = checkParsed(" %"); + assertThat(tree.type()).isEqualTo(ScssOperatorTree.OPERATOR.MODULO); + assertThat(tree.operator().text()).isEqualTo("%"); } @Test diff --git a/css-frontend/src/test/java/org/sonar/css/parser/scss/ScssVariableDeclarationTreeTest.java b/css-frontend/src/test/java/org/sonar/css/parser/scss/ScssVariableDeclarationTreeTest.java index c97c5e06..57e766a3 100644 --- a/css-frontend/src/test/java/org/sonar/css/parser/scss/ScssVariableDeclarationTreeTest.java +++ b/css-frontend/src/test/java/org/sonar/css/parser/scss/ScssVariableDeclarationTreeTest.java @@ -64,6 +64,8 @@ public void scssVariableDeclaration() { " lg: $grid-gutter-width-base,\n" + " xl: $grid-gutter-width-base\n" + ") !default;"); + + checkParsed(" $abc: ($top + $bot) % $component-space"); } @Test