Skip to content

Commit 552bcfc

Browse files
author
zhourenjian
committed
1. Fixing bug that generating SimpleSerializable members don't get correct member name if it has same name method
2. try { } catch (Throwable e) { } will generate "try { } catch (e) { ... }" without testing exception class 3. Support compilation of net.sf.j2s.html HTML DOM API
1 parent 4f1fea8 commit 552bcfc

File tree

5 files changed

+113
-22
lines changed

5 files changed

+113
-22
lines changed

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

Lines changed: 55 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -254,10 +254,13 @@ public boolean visit(Assignment node) {
254254
FieldAccess leftAccess = (FieldAccess) left;
255255
varBinding = leftAccess.resolveFieldBinding();
256256
}
257+
ITypeBinding declaring = null;
258+
String qName = null;
257259
if (varBinding != null
258260
&& (varBinding.getModifiers() & Modifier.STATIC) != 0
259-
&& varBinding.getDeclaringClass() != null
260-
&& !varBinding.getDeclaringClass().getQualifiedName().startsWith("org.eclipse.swt.internal.xhtml")) {
261+
&& (declaring = varBinding.getDeclaringClass()) != null
262+
&& !(qName = declaring.getQualifiedName()).startsWith("org.eclipse.swt.internal.xhtml.")
263+
&& !qName.startsWith("net.sf.j2s.html.")) {
261264
if (!(left instanceof SimpleName || (left instanceof QualifiedName && ((QualifiedName) left).getQualifier() instanceof SimpleName)
262265
|| (left instanceof FieldAccess && ((FieldAccess) left).getExpression() instanceof ThisExpression))) {
263266
buffer.append("(((");
@@ -731,10 +734,13 @@ public void endVisit(PostfixExpression node) {
731734
FieldAccess leftAccess = (FieldAccess) left;
732735
varBinding = leftAccess.resolveFieldBinding();
733736
}
737+
ITypeBinding declaring = null;
738+
String qName = null;
734739
if (varBinding != null
735740
&& (varBinding.getModifiers() & Modifier.STATIC) != 0
736-
&& varBinding.getDeclaringClass() != null
737-
&& !varBinding.getDeclaringClass().getQualifiedName().startsWith("org.eclipse.swt.internal.xhtml")) {
741+
&& (declaring = varBinding.getDeclaringClass()) != null
742+
&& !(qName = declaring.getQualifiedName()).startsWith("org.eclipse.swt.internal.xhtml.")
743+
&& !qName.startsWith("net.sf.j2s.html.")) {
738744
return ;
739745
}
740746
ITypeBinding typeBinding = node.getOperand().resolveTypeBinding();
@@ -760,10 +766,13 @@ public boolean visit(PostfixExpression node) {
760766
FieldAccess leftAccess = (FieldAccess) left;
761767
varBinding = leftAccess.resolveFieldBinding();
762768
}
769+
ITypeBinding declaring = null;
770+
String qName = null;
763771
if (varBinding != null
764772
&& (varBinding.getModifiers() & Modifier.STATIC) != 0
765-
&& varBinding.getDeclaringClass() != null
766-
&& !varBinding.getDeclaringClass().getQualifiedName().startsWith("org.eclipse.swt.internal.xhtml")) {
773+
&& (declaring = varBinding.getDeclaringClass()) != null
774+
&& !(qName = declaring.getQualifiedName()).startsWith("org.eclipse.swt.internal.xhtml.")
775+
&& !qName.startsWith("net.sf.j2s.html.")) {
767776
if (!(left instanceof SimpleName || (left instanceof QualifiedName && ((QualifiedName) left).getQualifier() instanceof SimpleName)
768777
|| (left instanceof FieldAccess && ((FieldAccess) left).getExpression() instanceof ThisExpression))) {
769778
buffer.append("(((");
@@ -882,10 +891,13 @@ public boolean visit(PrefixExpression node) {
882891
FieldAccess leftAccess = (FieldAccess) left;
883892
varBinding = leftAccess.resolveFieldBinding();
884893
}
894+
ITypeBinding declaring = null;
895+
String qName = null;
885896
if (varBinding != null
886897
&& (varBinding.getModifiers() & Modifier.STATIC) != 0
887-
&& varBinding.getDeclaringClass() != null
888-
&& !varBinding.getDeclaringClass().getQualifiedName().startsWith("org.eclipse.swt.internal.xhtml")) {
898+
&& (declaring = varBinding.getDeclaringClass()) != null
899+
&& !(qName = declaring.getQualifiedName()).startsWith("org.eclipse.swt.internal.xhtml.")
900+
&& !qName.startsWith("net.sf.j2s.html.")) {
889901
if (!(left instanceof SimpleName || (left instanceof QualifiedName && ((QualifiedName) left).getQualifier() instanceof SimpleName)
890902
|| (left instanceof FieldAccess && ((FieldAccess) left).getExpression() instanceof ThisExpression))) {
891903
buffer.append("(((");
@@ -1022,6 +1034,10 @@ public boolean visit(QualifiedName node) {
10221034
name = "";
10231035
}
10241036
}
1037+
String xhtml = "net.sf.j2s.html.";
1038+
if (name.indexOf(xhtml) == 0) {
1039+
name = name.substring(xhtml.length());
1040+
}
10251041
if (name.indexOf("java.lang.") == 0) {
10261042
name = name.substring(10);
10271043
}
@@ -1033,7 +1049,14 @@ public boolean visit(QualifiedName node) {
10331049
}
10341050
}
10351051
}
1036-
node.getQualifier().accept(this);
1052+
Name qName = node.getQualifier();
1053+
String nodeStr = qName.toString();
1054+
if (nodeStr.equals("net.sf.j2s.html")
1055+
|| nodeStr.equals("org.eclipse.swt.internal.xhtml")) {
1056+
node.getName().accept(this);
1057+
return false;
1058+
}
1059+
qName.accept(this);
10371060
buffer.append('.');
10381061
node.getName().accept(this);
10391062
return false;
@@ -1101,12 +1124,24 @@ public boolean visit(TryStatement node) {
11011124
SimpleName exName = element.getException().getName();
11021125
catchEName = exName.getIdentifier();
11031126
}
1104-
buffer.append(" catch (" + catchEName + ") {\r\n");
1105-
buffer.append("if (Clazz.instanceOf (" + catchEName + ", ");
1127+
buffer.append(" catch (" + catchEName + ") ");
1128+
boolean scopeAdded = false;
1129+
boolean endedWithThrowable = false;
11061130
for (Iterator iter = catchClauses.iterator(); iter.hasNext();) {
11071131
CatchClause element = (CatchClause) iter.next();
1108-
element.getException().getType().accept(this);
1109-
buffer.append(")) ");
1132+
Type type = element.getException().getType();
1133+
String typeName = type.toString();
1134+
if (!"Throwable".equals(typeName) && !"java.lang.Throwable".equals(typeName)) {
1135+
if (!scopeAdded) {
1136+
buffer.append("{\r\n");
1137+
scopeAdded = true;
1138+
}
1139+
buffer.append("if (Clazz.instanceOf (" + catchEName + ", ");
1140+
type.accept(this);
1141+
buffer.append(")) ");
1142+
} else {
1143+
endedWithThrowable = true;
1144+
}
11101145
SimpleName exName = element.getException().getName();
11111146
String eName = exName.getIdentifier();
11121147
boolean notEName = false;
@@ -1122,10 +1157,15 @@ public boolean visit(TryStatement node) {
11221157
buffer.append("\r\n}");
11231158
}
11241159
if (iter.hasNext()) {
1125-
buffer.append(" else if (Clazz.instanceOf (" + catchEName + ", ");
1160+
buffer.append(" else ");
11261161
}
11271162
}
1128-
buffer.append(" else {\r\nthrow " + catchEName + ";\r\n}\r\n}");
1163+
if (!endedWithThrowable) {
1164+
buffer.append(" else {\r\nthrow " + catchEName + ";\r\n}");
1165+
}
1166+
if (scopeAdded) {
1167+
buffer.append("\r\n}");
1168+
}
11291169
}
11301170
Block finallys = node.getFinally();
11311171
if (finallys != null) {

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

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1888,7 +1888,8 @@ public boolean visit(SimpleName node) {
18881888
ITypeBinding typeBinding = (ITypeBinding) binding;
18891889
if (typeBinding != null) {
18901890
String name = typeBinding.getQualifiedName();
1891-
if (name.startsWith("org.eclipse.swt.internal.xhtml")) {
1891+
if (name.startsWith("org.eclipse.swt.internal.xhtml.")
1892+
|| name.startsWith("net.sf.j2s.html.")) {
18921893
buffer.append(node.getIdentifier());
18931894
return false;
18941895
}
@@ -2896,9 +2897,31 @@ private String prepareSimpleSerializable(TypeDeclaration node, List bodyDeclarat
28962897
fieldsSerializables.append(", ");
28972898
}
28982899
/*
2899-
* TODO: What about when variable name is minimized?
2900+
* Fixed bug for the following scenario:
2901+
* class NT extends ... {
2902+
* public boolean typing;
2903+
* public void typing() {
2904+
* }
2905+
* }
29002906
*/
2901-
fieldsSerializables.append("\"" + var.getName() + "\", \"");
2907+
String fieldName = var.getName().toString();
2908+
if (checkKeyworkViolation(fieldName)) {
2909+
fieldName = "$" + fieldName;
2910+
}
2911+
String prefix = null;
2912+
if (binding != null
2913+
&& checkSameName(binding, fieldName)) {
2914+
prefix = "$";
2915+
}
2916+
if (binding != null
2917+
&& isInheritedFieldName(binding, fieldName)) {
2918+
fieldName = getFieldName(binding, fieldName);
2919+
}
2920+
if (prefix != null) {
2921+
fieldName = prefix + fieldName;
2922+
}
2923+
2924+
fieldsSerializables.append("\"" + fieldName + "\", \"");
29022925
if (mark.charAt(0) == 's' && curDim == 1) {
29032926
fieldsSerializables.append("AX");
29042927
} else if (curDim == 1) {

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,12 @@ public String shortenQualifiedName(String name) {
158158
String after = name.substring(xhtml.length());
159159
name = after;
160160
}
161+
xhtml = "net.sf.j2s.html.";
162+
index = name.indexOf(xhtml);
163+
if (index != -1) {
164+
String after = name.substring(xhtml.length());
165+
name = after;
166+
}
161167
swt = "org.eclipse.swt";
162168
index = name.indexOf(swt);
163169
if (index != -1) {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,8 @@ public boolean isQualifiedNameOK(String qualifiedName, ASTNode node) {
571571
&& !"boolean".equals(qualifiedName)
572572
&& !"void".equals(qualifiedName)
573573
&& !qualifiedName.startsWith("org.w3c.dom.")
574-
&& !qualifiedName.startsWith("org.eclipse.swt.internal.xhtml.")) {
574+
&& !qualifiedName.startsWith("org.eclipse.swt.internal.xhtml.")
575+
&& !qualifiedName.startsWith("net.sf.j2s.html.")) {
575576
ASTNode root = node.getRoot();
576577
if (root instanceof CompilationUnit) {
577578
CompilationUnit type = (CompilationUnit) root;

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

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,8 @@ public boolean visit(SimpleName node) {
9898
ITypeBinding typeBinding = (ITypeBinding) binding;
9999
if (typeBinding != null) {
100100
String name = typeBinding.getQualifiedName();
101-
if (name.startsWith("org.eclipse.swt.internal.xhtml")) {
101+
if (name.startsWith("org.eclipse.swt.internal.xhtml.")
102+
|| name.startsWith("net.sf.j2s.html.")) {
102103
String identifier = node.getIdentifier();
103104
if ("window".equals(identifier)) {
104105
identifier = "w$";
@@ -157,11 +158,15 @@ public boolean visit(QualifiedName node) {
157158
if (name.indexOf("java.lang.") == 0) {
158159
name = name.substring(10);
159160
}
160-
String xhtml = "org.eclipse.swt.internal.xhtml";
161+
String xhtml = "org.eclipse.swt.internal.xhtml.";
161162
if (name.indexOf(xhtml) == 0) {
162163
name = name.substring(xhtml.length());
163164
}
164-
xhtml = "$wt.internal.xhtml";
165+
xhtml = "net.sf.j2s.html.";
166+
if (name.indexOf(xhtml) == 0) {
167+
name = name.substring(xhtml.length());
168+
}
169+
xhtml = "$wt.internal.xhtml.";
165170
if (name.indexOf(xhtml) == 0) {
166171
name = name.substring(xhtml.length());
167172
}
@@ -178,6 +183,13 @@ public boolean visit(QualifiedName node) {
178183
}
179184
}
180185
}
186+
Name qName = node.getQualifier();
187+
String nodeStr = qName.toString();
188+
if (nodeStr.equals("net.sf.j2s.html")
189+
|| nodeStr.equals("org.eclipse.swt.internal.xhtml")) {
190+
node.getName().accept(this);
191+
return false;
192+
}
181193
node.getQualifier().accept(this);
182194
buffer.append('.');
183195
node.getName().accept(this);
@@ -213,6 +225,15 @@ public boolean visit(ClassInstanceCreation node) {
213225
buffer.append(")");
214226
return false;
215227
}
228+
filterKey = "net.sf.j2s.html.";
229+
if (fqName.startsWith(filterKey)) {
230+
buffer.append(" new ");
231+
buffer.append(fqName.substring(filterKey.length()));
232+
buffer.append(" (");
233+
visitList(node.arguments(), ", ");
234+
buffer.append(")");
235+
return false;
236+
}
216237
filterKey = "$wt.internal.xhtml.";
217238
if (fqName.startsWith(filterKey)) {
218239
buffer.append(" new ");

0 commit comments

Comments
 (0)