Skip to content

Commit 23fd8fe

Browse files
authored
Merge pull request #2182 from guwirth/fix-2180
fix #2180
2 parents b11e271 + 7b0a7ac commit 23fd8fe

File tree

3 files changed

+14
-12
lines changed

3 files changed

+14
-12
lines changed

cxx-squid/src/main/java/org/sonar/cxx/visitors/AbstractCxxPublicApiVisitor.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,16 @@
2121

2222
import com.sonar.sslr.api.AstNode;
2323
import com.sonar.sslr.api.GenericTokenType;
24-
import static com.sonar.sslr.api.GenericTokenType.IDENTIFIER;
2524
import com.sonar.sslr.api.Grammar;
2625
import com.sonar.sslr.api.Token;
2726
import com.sonar.sslr.impl.ast.AstXmlPrinter;
2827
import java.util.ArrayList;
2928
import java.util.List;
29+
import java.util.stream.Collectors;
3030
import javax.annotation.CheckForNull;
3131
import org.sonar.api.utils.log.Logger;
3232
import org.sonar.api.utils.log.Loggers;
3333
import org.sonar.cxx.parser.CxxGrammarImpl;
34-
import static org.sonar.cxx.parser.CxxGrammarImpl.qualifiedId;
3534
import org.sonar.cxx.parser.CxxKeyword;
3635
import org.sonar.cxx.parser.CxxPunctuator;
3736
import org.sonar.cxx.squidbridge.checks.SquidCheck;
@@ -646,13 +645,10 @@ private void visitTemplateDeclaration(AstNode templateDeclaration) {
646645
if (declId == null) {
647646
return;
648647
}
649-
var idNode = declId.getLastChild(qualifiedId);
650-
if (idNode != null) {
651-
idNode = idNode.getLastChild(IDENTIFIER);
652-
} else {
653-
idNode = declId;
654-
}
655-
String id = idNode.getTokenValue();
648+
649+
String id = declId.getTokens().stream()
650+
.map(Token::getValue)
651+
.collect(Collectors.joining());
656652

657653
// handle cascaded template declarations
658654
AstNode node = templateDeclaration;
@@ -815,7 +811,7 @@ private void visitEnumSpecifier(AstNode enumSpecifierNode) {
815811
docNode = enumSpecifierNode;
816812
}
817813

818-
visitPublicApi(enumSpecifierNode, enumId,getBlockDocumentation(docNode));
814+
visitPublicApi(enumSpecifierNode, enumId, getBlockDocumentation(docNode));
819815

820816
// deal with enumeration values
821817
AstNode enumeratorList = enumSpecifierNode.getFirstDescendant(CxxGrammarImpl.enumeratorList);
@@ -841,7 +837,7 @@ private void visitEnumSpecifier(AstNode enumSpecifierNode) {
841837
}
842838
}
843839

844-
visitPublicApi(definition, definition.getFirstDescendant( GenericTokenType.IDENTIFIER).getTokenValue(), comments);
840+
visitPublicApi(definition, definition.getFirstDescendant(GenericTokenType.IDENTIFIER).getTokenValue(), comments);
845841
}
846842
}
847843
}

cxx-squid/src/test/java/org/sonar/cxx/visitors/CxxPublicApiVisitorTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public void no_doc() throws IOException {
8383

8484
@Test
8585
public void template() throws IOException {
86-
assertThat(verifyPublicApiOfFile("src/test/resources/metrics/template.h")).isEqualTo(tuple(14, 4));
86+
assertThat(verifyPublicApiOfFile("src/test/resources/metrics/template.h")).isEqualTo(tuple(15, 4));
8787
}
8888

8989
@Test

cxx-squid/src/test/resources/metrics/template.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,9 @@ struct A {
7575
* @brief issue #2138
7676
*/
7777
template<> Formatter& LogMsg_applyFormat<int>(Formatter& format, int i);
78+
79+
/**
80+
* @brief issue #2180
81+
*/
82+
template <typename B>
83+
A<B>::~A() = default;

0 commit comments

Comments
 (0)