Skip to content

Commit b11375a

Browse files
authored
Merge pull request #1664 from guwirth/fix-1415
speed-up initialization list handling
2 parents c7fdb54 + a5ef0aa commit b11375a

File tree

4 files changed

+10
-9
lines changed

4 files changed

+10
-9
lines changed

cxx-checks/src/main/java/org/sonar/cxx/checks/HardcodedAccountCheck.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import org.sonar.check.Priority;
2727
import org.sonar.check.Rule;
2828
import org.sonar.check.RuleProperty;
29+
import org.sonar.cxx.api.CxxTokenType;
2930
import org.sonar.cxx.checks.utils.CheckUtils;
30-
import org.sonar.cxx.parser.CxxGrammarImpl;
3131
import org.sonar.cxx.tag.Tag;
3232
import org.sonar.squidbridge.annotations.ActivatedByDefault;
3333
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
@@ -69,7 +69,7 @@ public class HardcodedAccountCheck extends SquidCheck<Grammar> {
6969
@Override
7070
public void init() {
7171
pattern = CheckUtils.compileUserRegexp(regularExpression);
72-
subscribeTo(CxxGrammarImpl.LITERAL);
72+
subscribeTo(CxxTokenType.STRING);
7373
}
7474

7575
@Override

cxx-checks/src/main/java/org/sonar/cxx/checks/HardcodedIpCheck.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import org.sonar.check.Priority;
2727
import org.sonar.check.Rule;
2828
import org.sonar.check.RuleProperty;
29+
import org.sonar.cxx.api.CxxTokenType;
2930
import org.sonar.cxx.checks.utils.CheckUtils;
30-
import org.sonar.cxx.parser.CxxGrammarImpl;
3131
import org.sonar.cxx.tag.Tag;
3232
import org.sonar.squidbridge.annotations.ActivatedByDefault;
3333
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
@@ -67,7 +67,7 @@ public class HardcodedIpCheck extends SquidCheck<Grammar> {
6767
@Override
6868
public void init() {
6969
pattern = CheckUtils.compileUserRegexp(regularExpression);
70-
subscribeTo(CxxGrammarImpl.LITERAL);
70+
subscribeTo(CxxTokenType.STRING);
7171
}
7272

7373
@Override

cxx-checks/src/main/java/org/sonar/cxx/checks/StringLiteralDuplicatedCheck.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.sonar.check.Priority;
2828
import org.sonar.check.Rule;
2929
import org.sonar.check.RuleProperty;
30-
import org.sonar.cxx.parser.CxxGrammarImpl;
30+
import org.sonar.cxx.api.CxxTokenType;
3131
import org.sonar.cxx.tag.Tag;
3232
import org.sonar.squidbridge.annotations.ActivatedByDefault;
3333
import org.sonar.squidbridge.annotations.SqaleConstantRemediation;
@@ -57,7 +57,7 @@ public class StringLiteralDuplicatedCheck extends SquidCheck<Grammar> {
5757

5858
@Override
5959
public void init() {
60-
subscribeTo(CxxGrammarImpl.LITERAL);
60+
subscribeTo(CxxTokenType.STRING);
6161
}
6262

6363
@Override

cxx-squid/src/main/java/org/sonar/cxx/parser/CxxGrammarImpl.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,7 @@ private static void misc(LexerfulGrammarBuilder b) {
386386
BOOL, // boolean-literal
387387
NULLPTR // pointer-literal
388388
)
389-
);
389+
).skip();
390390
}
391391

392392
private static void vcAttributedAtl(LexerfulGrammarBuilder b) {
@@ -1463,7 +1463,7 @@ private static void declarators(LexerfulGrammarBuilder b) {
14631463
b.sequence("=", initializerClause), // C++
14641464
bracedInitList // C++
14651465
)
1466-
);
1466+
).skip();
14671467

14681468
b.rule(initializerClause).is(
14691469
// C-COMPATIBILITY: C99 designated initializers
@@ -1477,14 +1477,15 @@ private static void declarators(LexerfulGrammarBuilder b) {
14771477
assignmentExpression, // C++
14781478
bracedInitList // C++
14791479
)
1480-
);
1480+
).skipIfOneChild();
14811481

14821482
b.rule(initializerList).is(
14831483
initializerClause, b.optional("..."), b.zeroOrMore(",", initializerClause, b.optional("...")) // C++
14841484
);
14851485

14861486
b.rule(bracedInitList).is(
14871487
b.firstOf(
1488+
b.sequence("{", LITERAL, b.oneOrMore(",", LITERAL), "}" ), // syntax sugar: speed-up initialisation of big arrays
14881489
b.sequence("{", initializerList, b.optional(","), "}"), // C++
14891490
b.sequence("{", "}") // C++
14901491
)

0 commit comments

Comments
 (0)