Skip to content

Commit c739bbd

Browse files
author
zhourenjian
committed
Fixed bug that class a.A my have a.A.B in its optional dependent class list.
1 parent 0266fa7 commit c739bbd

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

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

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -126,13 +126,14 @@ protected void checkSuperType(Set set) {
126126
}
127127

128128

129-
protected void remedyReflectionDependency(Set set) {
129+
protected void remedyDependency(Set set) {
130130
String[] classNames = getClassNames();
131131
for (int i = 0; i < classNames.length; i++) {
132132
if ("net.sf.j2s.ajax.ASWTClass".equals(classNames[i])) {
133133
return;
134134
}
135135
}
136+
List toRemoveList = new ArrayList();
136137
boolean needRemedy = false;;
137138
for (Iterator iterator = set.iterator(); iterator.hasNext();) {
138139
Object next = iterator.next();
@@ -146,21 +147,30 @@ protected void remedyReflectionDependency(Set set) {
146147
if ("net.sf.j2s.ajax.AClass".equals(name)
147148
|| "net.sf.j2s.ajax.ASWTClass".equals(name)) {
148149
needRemedy = true;
149-
break;
150+
//break;
151+
}
152+
for (Iterator itr = classNameSet.iterator(); itr.hasNext();) {
153+
String className = (String) itr.next();
154+
if (name.startsWith(className + ".")) { // inner class dependency
155+
toRemoveList.add(next);
156+
}
150157
}
151158
}
152159
if (needRemedy) {
153160
set.add("java.lang.reflect.Constructor");
154161
}
162+
for (Iterator iterator = toRemoveList.iterator(); iterator.hasNext();) {
163+
set.remove(iterator.next());
164+
}
155165
}
156166

157167
public String getDependencyScript(StringBuffer mainJS) {
158168
checkSuperType(musts);
159169
checkSuperType(requires);
160170
checkSuperType(optionals);
161-
remedyReflectionDependency(musts);
162-
remedyReflectionDependency(requires);
163-
remedyReflectionDependency(optionals);
171+
remedyDependency(musts);
172+
remedyDependency(requires);
173+
remedyDependency(optionals);
164174

165175
musts.remove("");
166176
requires.remove("");

0 commit comments

Comments
 (0)