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 + -
显示快捷键?