Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 88bf1f4

Browse files
author
zhourenjian
committed
Fixed bug that "import static xxx.XXX.xxx;" not generating dependency on class "xxx.XXX".
1 parent 2217b72 commit 88bf1f4

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

src/net/sf/j2s/core/astvisitors/DependencyASTVisitor.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,10 @@ public boolean visit(TypeLiteral node) {
363363
QNTypeBinding qn = new QNTypeBinding();
364364
String qualifiedName = null;
365365
if (declaringClass != null) {
366+
ITypeBinding dclClass = null;
367+
while ((dclClass = declaringClass.getDeclaringClass()) != null) {
368+
declaringClass = dclClass;
369+
}
366370
qualifiedName = declaringClass.getQualifiedName();
367371
qn.binding = declaringClass;
368372
} else {
@@ -518,6 +522,10 @@ protected void visitForMusts(AbstractTypeDeclaration node) {
518522
String qualifiedName;
519523
ITypeBinding declaringClass = superBinding.getDeclaringClass();
520524
if (declaringClass != null) {
525+
ITypeBinding dclClass = null;
526+
while ((dclClass = declaringClass.getDeclaringClass()) != null) {
527+
declaringClass = dclClass;
528+
}
521529
qualifiedName = declaringClass.getQualifiedName();
522530
qn.binding = declaringClass;
523531
} else {
@@ -548,6 +556,10 @@ protected void visitForMusts(AbstractTypeDeclaration node) {
548556
String qualifiedName;
549557
ITypeBinding declaringClass = binding.getDeclaringClass();
550558
if (declaringClass != null) {
559+
ITypeBinding dclClass = null;
560+
while ((dclClass = declaringClass.getDeclaringClass()) != null) {
561+
declaringClass = dclClass;
562+
}
551563
qualifiedName = declaringClass.getQualifiedName();
552564
qn.binding = declaringClass;
553565
} else {
@@ -693,6 +705,10 @@ public boolean visit(SimpleName node) {
693705
if (!elementType.isPrimitive()) {
694706
ITypeBinding declaringClass = elementType.getDeclaringClass();
695707
if (declaringClass != null) {
708+
ITypeBinding dclClass = null;
709+
while ((dclClass = declaringClass.getDeclaringClass()) != null) {
710+
declaringClass = dclClass;
711+
}
696712
qualifiedName = declaringClass.getQualifiedName();
697713
qn.binding = declaringClass;
698714
} else {
@@ -703,6 +719,10 @@ public boolean visit(SimpleName node) {
703719
} else {
704720
ITypeBinding declaringClass = typeBinding.getDeclaringClass();
705721
if (declaringClass != null) {
722+
ITypeBinding dclClass = null;
723+
while ((dclClass = declaringClass.getDeclaringClass()) != null) {
724+
declaringClass = dclClass;
725+
}
706726
qualifiedName = declaringClass.getQualifiedName();
707727
qn.binding = declaringClass;
708728
} else {
@@ -717,6 +737,29 @@ public boolean visit(SimpleName node) {
717737
qn.qualifiedName = qualifiedName;
718738
optionals.add(qn);
719739
}
740+
} else if (binding instanceof IVariableBinding) {
741+
IVariableBinding varBinding = (IVariableBinding) binding;
742+
if ((varBinding.getModifiers() & Modifier.STATIC) != 0) {
743+
QNTypeBinding qn = new QNTypeBinding();
744+
String qualifiedName = null;
745+
746+
IVariableBinding variableDeclaration = varBinding.getVariableDeclaration();
747+
ITypeBinding declaringClass = variableDeclaration.getDeclaringClass();
748+
749+
ITypeBinding dclClass = null;
750+
while ((dclClass = declaringClass.getDeclaringClass()) != null) {
751+
declaringClass = dclClass;
752+
}
753+
qualifiedName = declaringClass.getQualifiedName();
754+
if (isQualifiedNameOK(qualifiedName, node)
755+
&& !musts.contains(qualifiedName)
756+
&& !requires.contains(qualifiedName)) {
757+
qn.qualifiedName = qualifiedName;
758+
optionals.add(qn);
759+
}
760+
761+
}
762+
720763
}
721764
return super.visit(node);
722765
}
@@ -734,6 +777,10 @@ public boolean visit(ClassInstanceCreation node) {
734777
} else if(resolveTypeBinding != null){
735778
ITypeBinding declaringClass = resolveTypeBinding.getDeclaringClass();
736779
if (declaringClass != null) {
780+
ITypeBinding dclClass = null;
781+
while ((dclClass = declaringClass.getDeclaringClass()) != null) {
782+
declaringClass = dclClass;
783+
}
737784
qualifiedName = declaringClass.getQualifiedName();
738785
qn.binding = declaringClass;
739786
} else {
@@ -766,6 +813,10 @@ public boolean visit(ClassInstanceCreation node) {
766813
// QNTypeBinding qn = new QNTypeBinding();
767814
// String qualifiedName = null;
768815
// if (declaringClass != null) {
816+
// ITypeBinding dclClass = null;
817+
// while ((dclClass = declaringClass.getDeclaringClass()) != null) {
818+
// declaringClass = dclClass;
819+
// }
769820
// qualifiedName = declaringClass.getQualifiedName();
770821
// qn.binding = declaringClass;
771822
// } else {
@@ -798,6 +849,10 @@ public boolean visit(MethodInvocation node) {
798849
QNTypeBinding qn = new QNTypeBinding();
799850
String qualifiedName = null;
800851
if (declaringClass != null) {
852+
ITypeBinding dclClass = null;
853+
while ((dclClass = declaringClass.getDeclaringClass()) != null) {
854+
declaringClass = dclClass;
855+
}
801856
qualifiedName = declaringClass.getQualifiedName();
802857
qn.binding = declaringClass;
803858
} else {
@@ -925,6 +980,10 @@ public boolean visit(FieldAccess node) {
925980
QNTypeBinding qn = new QNTypeBinding();
926981
String qualifiedName = null;
927982
if (declaringClass != null) {
983+
ITypeBinding dclClass = null;
984+
while ((dclClass = declaringClass.getDeclaringClass()) != null) {
985+
declaringClass = dclClass;
986+
}
928987
qualifiedName = declaringClass.getQualifiedName();
929988
qn.binding = declaringClass;
930989
} else {

0 commit comments

Comments
 (0)