Skip to content

Commit a869577

Browse files
committed
First full implementation of fully qualified names, including methods
Clazz.$new, Clazz.newMethod$, and Clazz.newInstance$ Basic idea: 0) SAEM (Search and Execute Method) deprecated. All method names qualified with full parameter names. Thus, no more issues with overloading or overriding. 1) All cla$$ (old c$, new C$) reference localized with "var" within Clazz.load or anonymous JavaScript function. 2) Clazz.newInstance$ replaces Clazz.prepareFields() and Clazz.initialize() 3) All constructors now are static methods of a class. 4) Constructor calls to super(...) are simply calls to cla$$.superClazz.construct$....apply(this, args) followed immediately by a call to cla$$.$init$(), which initializes all fields, exactly duplicating Java <init>, in the proper order. 5) Constructor calls to this(...) are simply calls to cla$$.construct$....apply(this, args) without any call to cla$$.$init$(). 6) No skipping of default constructors. Default constructor added automatically if none is present. 7) No skipping calls to default superconstructors -- provided automatically if not present. TODO -- recognition of construct(int...) as default constructor. 8) Clazz.newMethod$ allows for creation of all methods, including constructors, static methods, and $init$. 9) Clazz.$new(Foo.construct$..., args) replaces all calls to new Foo() and utilizes new (Function.prototype.bind.apply(c.exClazz, arguments)); 10) super.foo() replaced by cla$$.superClazz.prototype.apply(this,[...]) 11) overridden private methods still accessible to owner class by using the same mechanism, namely cla$$.prototype.apply(foo, [...]) 12) inner classes and anonymous classes created similarly. 13) Clazz.declareAnonymous and Clazz.innerTypeInstance deprecated.
1 parent 61903dd commit a869577

File tree

1 file changed

+30
-32
lines changed

1 file changed

+30
-32
lines changed

sources/net.sf.j2s.core/src/net/sf/j2s/core/astvisitors/ASTJ2SDocVisitor.java

Lines changed: 30 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,6 @@
2727
import org.eclipse.jdt.core.dom.CompilationUnit;
2828
import org.eclipse.jdt.core.dom.IAnnotationBinding;
2929
import org.eclipse.jdt.core.dom.IMemberValuePairBinding;
30-
import org.eclipse.jdt.core.dom.IMethodBinding;
31-
import org.eclipse.jdt.core.dom.ITypeBinding;
3230
import org.eclipse.jdt.core.dom.IfStatement;
3331
import org.eclipse.jdt.core.dom.Initializer;
3432
import org.eclipse.jdt.core.dom.Javadoc;
@@ -97,17 +95,17 @@ public boolean visit(Block node) {
9795

9896
boolean visitNativeJavadoc(Javadoc javadoc, Block node, boolean superVisit) {
9997
if (javadoc != null) {
100-
List tags = javadoc.tags();
98+
List<?> tags = javadoc.tags();
10199
if (tags.size() != 0) {
102-
for (Iterator iter = tags.iterator(); iter.hasNext();) {
100+
for (Iterator<?> iter = tags.iterator(); iter.hasNext();) {
103101
TagElement tagEl = (TagElement) iter.next();
104102
if ("@j2sIgnore".equals(tagEl.getTagName())) {
105103
if (superVisit) super.visit(node);
106104
return false;
107105
}
108106
}
109107
if (isDebugging()) {
110-
for (Iterator iter = tags.iterator(); iter.hasNext();) {
108+
for (Iterator<?> iter = tags.iterator(); iter.hasNext();) {
111109
TagElement tagEl = (TagElement) iter.next();
112110
if ("@j2sDebug".equals(tagEl.getTagName())) {
113111
if (superVisit) super.visit(node);
@@ -119,7 +117,7 @@ boolean visitNativeJavadoc(Javadoc javadoc, Block node, boolean superVisit) {
119117
boolean toCompileVariableName = ((ASTVariableVisitor) getAdaptable(ASTVariableVisitor.class)).isToCompileVariableName();
120118

121119
if (!toCompileVariableName) {
122-
for (Iterator iter = tags.iterator(); iter.hasNext();) {
120+
for (Iterator<?> iter = tags.iterator(); iter.hasNext();) {
123121
TagElement tagEl = (TagElement) iter.next();
124122
if ("@j2sNativeSrc".equals(tagEl.getTagName())) {
125123
if (superVisit) super.visit(node);
@@ -128,15 +126,15 @@ boolean visitNativeJavadoc(Javadoc javadoc, Block node, boolean superVisit) {
128126
}
129127
}
130128
}
131-
for (Iterator iter = tags.iterator(); iter.hasNext();) {
129+
for (Iterator<?> iter = tags.iterator(); iter.hasNext();) {
132130
TagElement tagEl = (TagElement) iter.next();
133131
if ("@j2sNative".equals(tagEl.getTagName())) {
134132
if (superVisit) super.visit(node);
135133
visitJavadocJ2SSource(tagEl);
136134
return false;
137135
}
138136
}
139-
for (Iterator iter = tags.iterator(); iter.hasNext();) {
137+
for (Iterator<?> iter = tags.iterator(); iter.hasNext();) {
140138
TagElement tagEl = (TagElement) iter.next();
141139
if ("@j2sXHTML".equals(tagEl.getTagName()) || "@j2sXCSS".equals(tagEl.getTagName())) {
142140
if (superVisit) super.visit(node);
@@ -150,10 +148,10 @@ boolean visitNativeJavadoc(Javadoc javadoc, Block node, boolean superVisit) {
150148
}
151149

152150
private void visitJavadocJ2SSource(TagElement tagEl) {
153-
List fragments = tagEl.fragments();
151+
List<?> fragments = tagEl.fragments();
154152
boolean isFirstLine = true;
155153
StringBuffer buf = new StringBuffer();
156-
for (Iterator iterator = fragments.iterator(); iterator
154+
for (Iterator<?> iterator = fragments.iterator(); iterator
157155
.hasNext();) {
158156
TextElement commentEl = (TextElement) iterator.next();
159157
String text = commentEl.getText().trim();
@@ -169,11 +167,11 @@ private void visitJavadocJ2SSource(TagElement tagEl) {
169167
}
170168

171169
private void visitJavadocXStringSource(TagElement tagEl, String tagName) {
172-
List fragments = tagEl.fragments();
170+
List<?> fragments = tagEl.fragments();
173171
boolean isFirstLine = true;
174172
StringBuffer buf = new StringBuffer();
175173
String firstLine = null;
176-
for (Iterator iterator = fragments.iterator(); iterator
174+
for (Iterator<?> iterator = fragments.iterator(); iterator
177175
.hasNext();) {
178176
TextElement commentEl = (TextElement) iterator.next();
179177
String text = commentEl.getText().trim();
@@ -391,17 +389,17 @@ boolean readStringSources(BodyDeclaration node, String tagName, String prefix, S
391389
boolean existed = false;
392390
Javadoc javadoc = node.getJavadoc();
393391
if (javadoc != null) {
394-
List tags = javadoc.tags();
392+
List<?> tags = javadoc.tags();
395393
if (tags.size() != 0) {
396-
for (Iterator iter = tags.iterator(); iter.hasNext();) {
394+
for (Iterator<?> iter = tags.iterator(); iter.hasNext();) {
397395
TagElement tagEl = (TagElement) iter.next();
398396
if (tagName.equals(tagEl.getTagName())) {
399397
if (tagEl != null) {
400-
List fragments = tagEl.fragments();
398+
List<?> fragments = tagEl.fragments();
401399
StringBuffer buf = new StringBuffer();
402400
boolean isFirstLine = true;
403401
String firstLine = null;
404-
for (Iterator iterator = fragments.iterator(); iterator
402+
for (Iterator<?> iterator = fragments.iterator(); iterator
405403
.hasNext();) {
406404
TextElement commentEl = (TextElement) iterator.next();
407405
String text = commentEl.getText().trim();
@@ -435,16 +433,16 @@ boolean readSources(BodyDeclaration node, String tagName, String prefix, String
435433
boolean existed = false;
436434
Javadoc javadoc = node.getJavadoc();
437435
if (javadoc != null) {
438-
List tags = javadoc.tags();
436+
List<?> tags = javadoc.tags();
439437
if (tags.size() != 0) {
440-
for (Iterator iter = tags.iterator(); iter.hasNext();) {
438+
for (Iterator<?> iter = tags.iterator(); iter.hasNext();) {
441439
TagElement tagEl = (TagElement) iter.next();
442440
if (tagName.equals(tagEl.getTagName())) {
443441
if (tagEl != null) {
444-
List fragments = tagEl.fragments();
442+
List<?> fragments = tagEl.fragments();
445443
StringBuffer buf = new StringBuffer();
446444
boolean isFirstLine = true;
447-
for (Iterator iterator = fragments.iterator(); iterator
445+
for (Iterator<?> iterator = fragments.iterator(); iterator
448446
.hasNext();) {
449447
TextElement commentEl = (TextElement) iterator.next();
450448
String text = commentEl.getText().trim();
@@ -470,8 +468,8 @@ boolean readSources(BodyDeclaration node, String tagName, String prefix, String
470468
if (existed && !both) {
471469
return existed;
472470
}
473-
List modifiers = node.modifiers();
474-
for (Iterator iter = modifiers.iterator(); iter.hasNext();) {
471+
List<?> modifiers = node.modifiers();
472+
for (Iterator<?> iter = modifiers.iterator(); iter.hasNext();) {
475473
Object obj = (Object) iter.next();
476474
if (obj instanceof Annotation) {
477475
Annotation annotation = (Annotation) obj;
@@ -523,14 +521,14 @@ private String fixCommentBlock(String text) {
523521

524522
private Javadoc[] checkJavadocs(ASTNode root) {
525523
if (root instanceof CompilationUnit) {
526-
List commentList = ((CompilationUnit) root).getCommentList();
527-
ArrayList list = new ArrayList();
528-
for (Iterator iter = commentList.iterator(); iter.hasNext();) {
524+
List<?> commentList = ((CompilationUnit) root).getCommentList();
525+
ArrayList<Comment> list = new ArrayList<Comment>();
526+
for (Iterator<?> iter = commentList.iterator(); iter.hasNext();) {
529527
Comment comment = (Comment) iter.next();
530528
if (comment instanceof Javadoc) {
531-
List tags = ((Javadoc) comment).tags();
529+
List<?> tags = ((Javadoc) comment).tags();
532530
if (tags.size() != 0) {
533-
for (Iterator itr = tags.iterator(); itr.hasNext();) {
531+
for (Iterator<?> itr = tags.iterator(); itr.hasNext();) {
534532
TagElement tagEl = (TagElement) itr.next();
535533
String tagName = tagEl.getTagName();
536534
if ("@j2sIgnore".equals(tagName) || "@j2sDebug".equals(tagName)
@@ -556,7 +554,7 @@ private int getPreviousStartPosition(Block node) {
556554
previousStart = sttmt.getStartPosition();
557555
if (sttmt instanceof Block) {
558556
Block parentBlock = (Block) sttmt;
559-
for (Iterator iter = parentBlock.statements().iterator(); iter.hasNext();) {
557+
for (Iterator<?> iter = parentBlock.statements().iterator(); iter.hasNext();) {
560558
Statement element = (Statement) iter.next();
561559
if (element == node) {
562560
break;
@@ -593,19 +591,19 @@ private int getPreviousStartPosition(Block node) {
593591
protected Object getJ2STag(BodyDeclaration node, String tagName) {
594592
Javadoc javadoc = node.getJavadoc();
595593
if (javadoc != null) {
596-
List tags = javadoc.tags();
594+
List<?> tags = javadoc.tags();
597595
if (tags.size() != 0) {
598-
for (Iterator iter = tags.iterator(); iter.hasNext();) {
596+
for (Iterator<?> iter = tags.iterator(); iter.hasNext();) {
599597
TagElement tagEl = (TagElement) iter.next();
600598
if (tagName.equals(tagEl.getTagName())) {
601599
return tagEl;
602600
}
603601
}
604602
}
605603
}
606-
List modifiers = node.modifiers();
604+
List<?> modifiers = node.modifiers();
607605
if (modifiers != null && modifiers.size() > 0) {
608-
for (Iterator iter = modifiers.iterator(); iter.hasNext();) {
606+
for (Iterator<?> iter = modifiers.iterator(); iter.hasNext();) {
609607
Object obj = (Object) iter.next();
610608
if (obj instanceof Annotation) {
611609
Annotation annotation = (Annotation) obj;

0 commit comments

Comments
 (0)