25 |
25 |
26 import java.nio.CharBuffer; |
26 import java.nio.CharBuffer; |
27 import java.util.function.Consumer; |
27 import java.util.function.Consumer; |
28 import java.util.function.Function; |
28 import java.util.function.Function; |
29 |
29 |
|
30 import javax.lang.model.element.Modifier; |
30 import javax.tools.JavaFileObject; |
31 import javax.tools.JavaFileObject; |
31 |
32 |
32 import com.sun.source.doctree.DocTree; |
33 import com.sun.source.doctree.DocTree; |
33 import com.sun.source.tree.CompilationUnitTree; |
34 import com.sun.source.tree.CompilationUnitTree; |
34 import com.sun.source.util.TreeBuilder; |
35 import com.sun.source.util.TreeBuilder; |
|
36 import com.sun.tools.javac.code.Flags; |
35 import com.sun.tools.javac.code.TypeTag; |
37 import com.sun.tools.javac.code.TypeTag; |
36 import com.sun.tools.javac.tree.JCTree; |
38 import com.sun.tools.javac.tree.JCTree; |
37 import com.sun.tools.javac.tree.JCTree.JCClassDecl; |
39 import com.sun.tools.javac.tree.JCTree.JCClassDecl; |
38 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; |
40 import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; |
39 import com.sun.tools.javac.tree.JCTree.JCExpression; |
41 import com.sun.tools.javac.tree.JCTree.JCExpression; |
45 import com.sun.tools.javac.util.List; |
47 import com.sun.tools.javac.util.List; |
46 import com.sun.tools.javac.main.JavaCompiler; |
48 import com.sun.tools.javac.main.JavaCompiler; |
47 import com.sun.tools.javac.parser.Parser; |
49 import com.sun.tools.javac.parser.Parser; |
48 import com.sun.tools.javac.parser.ParserFactory; |
50 import com.sun.tools.javac.parser.ParserFactory; |
49 import com.sun.tools.javac.tree.JCTree.JCBlock; |
51 import com.sun.tools.javac.tree.JCTree.JCBlock; |
|
52 import com.sun.tools.javac.tree.JCTree.JCModifiers; |
50 import com.sun.tools.javac.tree.JCTree.JCStatement; |
53 import com.sun.tools.javac.tree.JCTree.JCStatement; |
51 import com.sun.tools.javac.util.JCDiagnostic; |
54 import com.sun.tools.javac.util.JCDiagnostic; |
52 import com.sun.tools.javac.util.Log.DiagnosticHandler; |
55 import com.sun.tools.javac.util.Log.DiagnosticHandler; |
53 import com.sun.tools.javac.util.Names; |
56 import com.sun.tools.javac.util.Names; |
54 |
57 |
157 throw new UnsupportedOperationException("Not supported yet."); |
160 throw new UnsupportedOperationException("Not supported yet."); |
158 } |
161 } |
159 |
162 |
160 @Override |
163 @Override |
161 public Class modifiers(Consumer<Modifiers> modifiers) { |
164 public Class modifiers(Consumer<Modifiers> modifiers) { |
162 throw new UnsupportedOperationException("Not supported yet."); |
165 modifiers.accept(new ModifiersImpl(result.mods)); |
|
166 return this; |
163 } |
167 } |
164 |
168 |
165 @Override |
169 @Override |
166 public Class javadoc(DocTree doc) { |
170 public Class javadoc(DocTree doc) { |
167 throw new UnsupportedOperationException("Not supported yet."); |
171 throw new UnsupportedOperationException("Not supported yet."); |
475 public void ident(String... qnames) { |
481 public void ident(String... qnames) { |
476 expr = make.Ident(names.fromString(qnames[0])); |
482 expr = make.Ident(names.fromString(qnames[0])); |
477 for (int i = 1; i < qnames.length; i++) { |
483 for (int i = 1; i < qnames.length; i++) { |
478 expr = make.Select(expr, names.fromString(qnames[i])); |
484 expr = make.Select(expr, names.fromString(qnames[i])); |
479 } |
485 } |
|
486 } |
|
487 |
|
488 } |
|
489 |
|
490 private final class ModifiersImpl implements Modifiers { |
|
491 |
|
492 private final JCModifiers mods; |
|
493 |
|
494 public ModifiersImpl(JCModifiers mods) { |
|
495 this.mods = mods; |
|
496 } |
|
497 |
|
498 @Override |
|
499 public Modifiers modifier(Modifier modifier) { |
|
500 long flag; |
|
501 switch (modifier) { |
|
502 case PUBLIC: flag = Flags.PUBLIC; break; |
|
503 case PROTECTED: flag = Flags.PROTECTED; break; |
|
504 case PRIVATE: flag = Flags.PRIVATE; break; |
|
505 case ABSTRACT: flag = Flags.ABSTRACT; break; |
|
506 case STATIC: flag = Flags.STATIC; break; |
|
507 case FINAL: flag = Flags.FINAL; break; |
|
508 case TRANSIENT: flag = Flags.TRANSIENT; break; |
|
509 case VOLATILE: flag = Flags.VOLATILE; break; |
|
510 case SYNCHRONIZED: flag = Flags.SYNCHRONIZED; break; |
|
511 case NATIVE: flag = Flags.NATIVE; break; |
|
512 case STRICTFP: flag = Flags.STRICTFP; break; |
|
513 case DEFAULT: flag = Flags.DEFAULT; break; |
|
514 default: |
|
515 throw new IllegalArgumentException("Unknown modifier: " + modifier); |
|
516 } |
|
517 mods.flags |= flag; |
|
518 return this; |
|
519 } |
|
520 |
|
521 @Override |
|
522 public Modifiers annotation(Consumer<Annotation> annotation) { |
|
523 throw new UnsupportedOperationException("Not supported yet."); |
480 } |
524 } |
481 |
525 |
482 } |
526 } |
483 |
527 |
484 private JCExpression visitExpression(Consumer<Expression> c) { |
528 private JCExpression visitExpression(Consumer<Expression> c) { |