< prev index next >

test/langtools/tools/javac/desugar/BoxingAndSuper.java

Print this page
rev 51258 : imported patch switch


  44 import java.util.TreeSet;
  45 
  46 import javax.tools.JavaFileObject;
  47 import javax.tools.ToolProvider;
  48 
  49 import com.sun.source.tree.IdentifierTree;
  50 import com.sun.source.tree.Tree;
  51 import com.sun.source.tree.VariableTree;
  52 import com.sun.source.util.JavacTask;
  53 import com.sun.tools.javac.api.JavacTool;
  54 import com.sun.tools.javac.code.Symbol;
  55 import com.sun.tools.javac.comp.AttrContext;
  56 import com.sun.tools.javac.comp.Env;
  57 import com.sun.tools.javac.comp.Lower;
  58 import com.sun.tools.javac.tree.JCTree;
  59 import com.sun.tools.javac.tree.JCTree.JCBlock;
  60 import com.sun.tools.javac.tree.JCTree.JCExpression;
  61 import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
  62 import com.sun.tools.javac.tree.JCTree.JCMethodInvocation;
  63 import com.sun.tools.javac.tree.JCTree.JCModifiers;

  64 import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
  65 import com.sun.tools.javac.tree.JCTree.LetExpr;
  66 import com.sun.tools.javac.tree.JCTree.Tag;
  67 import com.sun.tools.javac.tree.TreeCopier;
  68 import com.sun.tools.javac.tree.TreeInfo;
  69 import com.sun.tools.javac.tree.TreeMaker;
  70 import com.sun.tools.javac.tree.TreeScanner;
  71 import com.sun.tools.javac.util.Context;
  72 import com.sun.tools.javac.util.List;
  73 import com.sun.tools.javac.util.Log;
  74 import com.sun.tools.javac.util.Log.WriterKind;
  75 import com.sun.tools.javac.util.Names;
  76 
  77 import toolbox.ToolBox;
  78 
  79 public class BoxingAndSuper {
  80     public static void main(String... args) throws Exception {
  81         new BoxingAndSuper().testSuper();
  82         new BoxingAndSuper().testThis();
  83     }


 310                 return ;
 311 
 312             JCMethodDecl method = declarations.get(methodSym);
 313 
 314             if (method == null) {
 315                 return ;
 316             }
 317 
 318             log.getWriter(WriterKind.NOTICE).println(symbol2String(methodSym));
 319 
 320             JCBlock body = new TreeCopier<Void>(make) {
 321                 private final Map<String, String> letExprRemap = new HashMap<>();
 322                 private int i;
 323 
 324                 @Override
 325                 public JCTree visitOther(Tree node, Void p) {
 326                     JCTree tree = (JCTree) node;
 327                     if (tree.hasTag(Tag.LETEXPR)) {
 328                         LetExpr le = (LetExpr) tree;
 329 
 330                         for (JCVariableDecl var : le.defs) {
 331                             letExprRemap.put(var.name.toString(), "$le" + i++);
 332                         }
 333                     }
 334                     return super.visitOther(node, p);
 335                 }
 336 
 337                 @Override
 338                 public JCTree visitVariable(VariableTree node, Void p) {
 339                     String newName = letExprRemap.get(node.getName().toString());
 340                     if (newName != null) {
 341                         node = make.VarDef((JCModifiers) node.getModifiers(), names.fromString(newName), (JCExpression) node.getType(), (JCExpression) node.getInitializer());
 342                     }
 343                     return super.visitVariable(node, p);
 344                 }
 345 
 346                 @Override
 347                 public JCTree visitIdentifier(IdentifierTree node, Void p) {
 348                     String newName = letExprRemap.get(node.getName().toString());
 349                     if (newName != null) {
 350                         node = make.Ident(names.fromString(newName));
 351                     }




  44 import java.util.TreeSet;
  45 
  46 import javax.tools.JavaFileObject;
  47 import javax.tools.ToolProvider;
  48 
  49 import com.sun.source.tree.IdentifierTree;
  50 import com.sun.source.tree.Tree;
  51 import com.sun.source.tree.VariableTree;
  52 import com.sun.source.util.JavacTask;
  53 import com.sun.tools.javac.api.JavacTool;
  54 import com.sun.tools.javac.code.Symbol;
  55 import com.sun.tools.javac.comp.AttrContext;
  56 import com.sun.tools.javac.comp.Env;
  57 import com.sun.tools.javac.comp.Lower;
  58 import com.sun.tools.javac.tree.JCTree;
  59 import com.sun.tools.javac.tree.JCTree.JCBlock;
  60 import com.sun.tools.javac.tree.JCTree.JCExpression;
  61 import com.sun.tools.javac.tree.JCTree.JCMethodDecl;
  62 import com.sun.tools.javac.tree.JCTree.JCMethodInvocation;
  63 import com.sun.tools.javac.tree.JCTree.JCModifiers;
  64 import com.sun.tools.javac.tree.JCTree.JCStatement;
  65 import com.sun.tools.javac.tree.JCTree.JCVariableDecl;
  66 import com.sun.tools.javac.tree.JCTree.LetExpr;
  67 import com.sun.tools.javac.tree.JCTree.Tag;
  68 import com.sun.tools.javac.tree.TreeCopier;
  69 import com.sun.tools.javac.tree.TreeInfo;
  70 import com.sun.tools.javac.tree.TreeMaker;
  71 import com.sun.tools.javac.tree.TreeScanner;
  72 import com.sun.tools.javac.util.Context;
  73 import com.sun.tools.javac.util.List;
  74 import com.sun.tools.javac.util.Log;
  75 import com.sun.tools.javac.util.Log.WriterKind;
  76 import com.sun.tools.javac.util.Names;
  77 
  78 import toolbox.ToolBox;
  79 
  80 public class BoxingAndSuper {
  81     public static void main(String... args) throws Exception {
  82         new BoxingAndSuper().testSuper();
  83         new BoxingAndSuper().testThis();
  84     }


 311                 return ;
 312 
 313             JCMethodDecl method = declarations.get(methodSym);
 314 
 315             if (method == null) {
 316                 return ;
 317             }
 318 
 319             log.getWriter(WriterKind.NOTICE).println(symbol2String(methodSym));
 320 
 321             JCBlock body = new TreeCopier<Void>(make) {
 322                 private final Map<String, String> letExprRemap = new HashMap<>();
 323                 private int i;
 324 
 325                 @Override
 326                 public JCTree visitOther(Tree node, Void p) {
 327                     JCTree tree = (JCTree) node;
 328                     if (tree.hasTag(Tag.LETEXPR)) {
 329                         LetExpr le = (LetExpr) tree;
 330 
 331                         for (JCStatement var : le.defs) {
 332                             letExprRemap.put(((JCVariableDecl) var).name.toString(), "$le" + i++);
 333                         }
 334                     }
 335                     return super.visitOther(node, p);
 336                 }
 337 
 338                 @Override
 339                 public JCTree visitVariable(VariableTree node, Void p) {
 340                     String newName = letExprRemap.get(node.getName().toString());
 341                     if (newName != null) {
 342                         node = make.VarDef((JCModifiers) node.getModifiers(), names.fromString(newName), (JCExpression) node.getType(), (JCExpression) node.getInitializer());
 343                     }
 344                     return super.visitVariable(node, p);
 345                 }
 346 
 347                 @Override
 348                 public JCTree visitIdentifier(IdentifierTree node, Void p) {
 349                     String newName = letExprRemap.get(node.getName().toString());
 350                     if (newName != null) {
 351                         node = make.Ident(names.fromString(newName));
 352                     }


< prev index next >