Skip to content

Commit 5141248

Browse files
committed
Handle aliased imports in FullyQualifiedImport
1 parent d549590 commit 5141248

File tree

2 files changed

+37
-10
lines changed

2 files changed

+37
-10
lines changed

delphi-checks/src/main/java/au/com/integradev/delphi/checks/FullyQualifiedImportCheck.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,32 +25,32 @@
2525
import org.sonar.plugins.communitydelphi.api.reporting.QuickFix;
2626
import org.sonar.plugins.communitydelphi.api.reporting.QuickFixEdit;
2727
import org.sonar.plugins.communitydelphi.api.symbol.declaration.UnitImportNameDeclaration;
28+
import org.sonar.plugins.communitydelphi.api.symbol.declaration.UnitNameDeclaration;
2829

2930
@Rule(key = "FullyQualifiedImport")
3031
public class FullyQualifiedImportCheck extends DelphiCheck {
3132

3233
@Override
3334
public DelphiCheckContext visit(UnitImportNode unitImportNode, DelphiCheckContext context) {
34-
if (!unitImportNode.isResolvedImport()) {
35+
UnitImportNameDeclaration importDeclaration = unitImportNode.getImportNameDeclaration();
36+
UnitNameDeclaration unitDeclaration = importDeclaration.getOriginalDeclaration();
37+
38+
if (unitDeclaration == null || importDeclaration.isAlias()) {
3539
return context;
3640
}
3741

38-
UnitImportNameDeclaration unitImportNameDeclaration = unitImportNode.getImportNameDeclaration();
39-
40-
String unitFullyQualifiedName = unitImportNameDeclaration.getOriginalDeclaration().getImage();
41-
String unitImportName = unitImportNameDeclaration.getImage();
42+
String actual = importDeclaration.fullyQualifiedName();
43+
String expected = unitDeclaration.fullyQualifiedName();
4244

43-
if (unitImportName.length() != unitFullyQualifiedName.length()) {
45+
if (!actual.equalsIgnoreCase(expected)) {
4446
context
4547
.newIssue()
4648
.onNode(unitImportNode)
4749
.withMessage(
48-
"Fully qualify this unit name (found: \"%s\" expected: \"%s\").",
49-
unitImportName, unitFullyQualifiedName)
50+
"Fully qualify this unit name (found: \"%s\" expected: \"%s\").", actual, expected)
5051
.withQuickFixes(
5152
QuickFix.newFix("Fully qualify unit import")
52-
.withEdit(
53-
QuickFixEdit.replace(unitImportNode.getNameNode(), unitFullyQualifiedName)))
53+
.withEdit(QuickFixEdit.replace(unitImportNode.getNameNode(), expected)))
5454
.report();
5555
}
5656

delphi-checks/src/test/java/au/com/integradev/delphi/checks/FullyQualifiedImportCheckTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,33 @@ void testUnresolvedImportShouldNotAddIssue() {
8282
.verifyNoIssues();
8383
}
8484

85+
@Test
86+
void testUnitAliasImportShouldNotAddIssue() {
87+
var testFile = new DelphiTestUnitBuilder().appendDecl("uses").appendDecl(" AliasName;");
88+
89+
CheckVerifier.newVerifier()
90+
.withCheck(new FullyQualifiedImportCheck())
91+
.withSearchPathUnit(new DelphiTestUnitBuilder().unitName("Scope.RealName"))
92+
.withSearchPathUnit(new DelphiTestUnitBuilder().unitName("Scope.AliasName"))
93+
.withUnitScopeName("Scope")
94+
.withUnitAlias("AliasName", "Scope.RealName")
95+
.onFile(testFile)
96+
.verifyNoIssues();
97+
}
98+
99+
@Test
100+
void testUnitAliasImportThatLooksLikeUnqualifiedImportShouldNotAddIssue() {
101+
var testFile = new DelphiTestUnitBuilder().appendDecl("uses").appendDecl(" Name;");
102+
103+
CheckVerifier.newVerifier()
104+
.withCheck(new FullyQualifiedImportCheck())
105+
.withSearchPathUnit(new DelphiTestUnitBuilder().unitName("Scope.Name"))
106+
.withUnitScopeName("Scope")
107+
.withUnitAlias("Name", "Scope.Name")
108+
.onFile(testFile)
109+
.verifyNoIssues();
110+
}
111+
85112
@Test
86113
void testNotFullyQualifiedImportShouldAddIssue() {
87114
var importedUnit = new DelphiTestUnitBuilder().unitName("Scope.UnitU");

0 commit comments

Comments
 (0)