declarebeforeuse.jrag

来自「JDK1.4编译器前端」· JRAG 代码 · 共 51 行

JRAG
51
字号
/* * The JastAdd Extensible Java Compiler (http://jastadd.org) is covered * by the modified BSD License. You should have received a copy of the * modified BSD license with this compiler. *  * Copyright (c) 2005-2008, Torbjorn Ekman * All rights reserved. */import java.util.*;aspect DeclareBeforeUse {  public int ASTNode.varChildIndex(Block b) {    ASTNode node = this;    while(node.getParent().getParent() != b) {      node = node.getParent();    }    return b.getStmtListNoTransform().getIndexOfChild(node);  }  public boolean Block.declaredBeforeUse(Variable decl, ASTNode use) {    int indexDecl = ((ASTNode)decl).varChildIndex(this);    int indexUse = use.varChildIndex(this);    return indexDecl <= indexUse;  }  public boolean Block.declaredBeforeUse(Variable decl, int indexUse) {    int indexDecl = ((ASTNode)decl).varChildIndex(this);    return indexDecl <= indexUse;  }  public int ASTNode.varChildIndex(TypeDecl t) {    ASTNode node = this;    while(node != null && node.getParent() != null && node.getParent().getParent() != t) {      node = node.getParent();    }    if(node == null)      return -1;    return t.getBodyDeclListNoTransform().getIndexOfChild(node);  }  public boolean TypeDecl.declaredBeforeUse(Variable decl, ASTNode use) {    int indexDecl = ((ASTNode)decl).varChildIndex(this);    int indexUse = use.varChildIndex(this);    return indexDecl < indexUse;  }  public boolean TypeDecl.declaredBeforeUse(Variable decl, int indexUse) {    int indexDecl = ((ASTNode)decl).varChildIndex(this);    return indexDecl < indexUse;  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?