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

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)