⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lookuptype.jrag

📁 JDK1.4编译器前端
💻 JRAG
📖 第 1 页 / 共 2 页
字号:
    return set;  }  syn SimpleSet CompilationUnit.importedTypesOnDemand(String name) {    SimpleSet set = SimpleSet.emptySet;    for(int i = 0; i < getNumImportDecl(); i++)      if(getImportDecl(i).isOnDemand())        for(Iterator iter = getImportDecl(i).importedTypes(name).iterator(); iter.hasNext(); )          set = set.add(iter.next());    return set;  }  syn lazy SimpleSet ImportDecl.importedTypes(String name) = SimpleSet.emptySet;  eq SingleTypeImportDecl.importedTypes(String name) {    SimpleSet set = SimpleSet.emptySet;    if(getAccess().type().name().equals(name))      set = set.add(getAccess().type());    return set;  }  eq TypeImportOnDemandDecl.importedTypes(String name) {    SimpleSet set = SimpleSet.emptySet;    if(getAccess() instanceof PackageAccess) {      String packageName = ((PackageAccess)getAccess()).getPackage();      TypeDecl typeDecl = lookupType(packageName, name);      if(typeDecl != null && typeDecl.accessibleFromPackage(packageName()) &&         typeDecl.typeName().equals(packageName + "." + name)) // canonical names match        set = set.add(typeDecl);    }    else {      for(Iterator iter = getAccess().type().memberTypes(name).iterator(); iter.hasNext(); ) {        TypeDecl decl = (TypeDecl)iter.next();        if(decl.accessibleFromPackage(packageName()) &&           decl.typeName().equals(getAccess().typeName() + "." + name)) // canonical names match          set = set.add(decl);      }    }    return set;  }  inh TypeDecl TypeImportOnDemandDecl.lookupType(String packageName, String typeName);  inh String ImportDecl.packageName();  syn boolean ImportDecl.isOnDemand() = false;  eq TypeImportOnDemandDecl.isOnDemand() = true;  // imports are not themselves affected by imports  eq CompilationUnit.getImportDecl().lookupType(String name) =    lookupType(name);  eq TypeDecl.getBodyDecl().lookupType(String name) {    SimpleSet c = memberTypes(name);    if(!c.isEmpty())       return c;    if(name().equals(name))      return SimpleSet.emptySet.add(this);    c = lookupType(name);    // 8.5.2    if(isClassDecl() && isStatic() && !isTopLevelType()) {      SimpleSet newSet = SimpleSet.emptySet;      for(Iterator iter = c.iterator(); iter.hasNext(); ) {        TypeDecl d = (TypeDecl)iter.next();        //if(d.isStatic() || d.isTopLevelType() || this.instanceOf(d.enclosingType())) {          newSet = newSet.add(d);        //}      }      c = newSet;    }    return c;  }  eq Block.getStmt(int index).lookupType(String name) {    SimpleSet c = SimpleSet.emptySet;    for(int i = index; i >= 0 && !(getStmt(i) instanceof Case); i--) {      if(getStmt(i) instanceof LocalClassDeclStmt) {        TypeDecl t = ((LocalClassDeclStmt)getStmt(i)).getClassDecl();        if(t.name().equals(name)) {          c = c.add(t);        }      }    }    if(!c.isEmpty())      return c;    return lookupType(name);  }  eq ClassInstanceExpr.getAccess().lookupType(String name) {    SimpleSet c = lookupType(name);    if(c.size() == 1) {      if(isQualified())        c = keepInnerClasses(c);    }    return c;  }    eq ClassInstanceExpr.getTypeDecl().lookupType(String name) {    SimpleSet c = localLookupType(name);    if(!c.isEmpty())      return c;    c = lookupType(name);    if(!c.isEmpty())      return c;    return unqualifiedScope().lookupType(name);  }  public SimpleSet ClassInstanceExpr.keepInnerClasses(SimpleSet c) {    SimpleSet newSet = SimpleSet.emptySet;    for(Iterator iter = c.iterator(); iter.hasNext(); ) {      TypeDecl t = (TypeDecl)iter.next();      if(t.isInnerType() && t.isClassDecl()) {        newSet = newSet.add(c);      }    }    return newSet;  }    eq ParseName.qualifiedLookupType(String name) = SimpleSet.emptySet;  eq PackageOrTypeAccess.qualifiedLookupType(String name) = SimpleSet.emptySet;  eq AmbiguousAccess.qualifiedLookupType(String name) = SimpleSet.emptySet;  eq AbstractDot.getRight().lookupType(String name) = getLeft().qualifiedLookupType(name);  syn SimpleSet Expr.qualifiedLookupType(String name) =    keepAccessibleTypes(type().memberTypes(name));  eq ClassInstanceExpr.qualifiedLookupType(String name) {    SimpleSet c = keepAccessibleTypes(type().memberTypes(name));    if(!c.isEmpty())      return c;    if(type().name().equals(name))      return SimpleSet.emptySet.add(type());    return SimpleSet.emptySet;  }  eq PackageAccess.qualifiedLookupType(String name) {    SimpleSet c = SimpleSet.emptySet;    TypeDecl typeDecl = lookupType(packageName(), name);    if(nextAccess() instanceof ClassInstanceExpr) {      if(typeDecl != null && typeDecl.accessibleFrom(hostType()))        c = c.add(typeDecl);      return c;    }    else {      if(typeDecl != null) {        if(hostType() != null && typeDecl.accessibleFrom(hostType()))          c = c.add(typeDecl);        else if(hostType() == null && typeDecl.accessibleFromPackage(hostPackage()))          c = c.add(typeDecl);      }      return c;    }  }      public SimpleSet Expr.keepAccessibleTypes(SimpleSet oldSet) {    SimpleSet newSet = SimpleSet.emptySet;    TypeDecl hostType = hostType();    for(Iterator iter = oldSet.iterator(); iter.hasNext(); ) {      TypeDecl t = (TypeDecl)iter.next();      if((hostType != null && t.accessibleFrom(hostType)) || (hostType == null && t.accessibleFromPackage(hostPackage())))        newSet = newSet.add(t);    }    return newSet;  }  syn lazy SimpleSet ClassInstanceExpr.localLookupType(String name) {    if(hasTypeDecl() && getTypeDecl().name().equals(name))      return SimpleSet.emptySet.add(getTypeDecl());    return SimpleSet.emptySet;  }  syn boolean TypeDecl.hasType(String name) = !memberTypes(name).isEmpty();  syn boolean BodyDecl.declaresType(String name) = false;  eq MemberTypeDecl.declaresType(String name) = typeDecl().name().equals(name);  syn TypeDecl BodyDecl.type(String name) = null;  eq MemberTypeDecl.type(String name) = declaresType(name) ? typeDecl() : null;  syn TypeDecl MemberTypeDecl.typeDecl();  eq MemberClassDecl.typeDecl() = getClassDecl();  eq MemberInterfaceDecl.typeDecl() = getInterfaceDecl();    syn lazy SimpleSet TypeDecl.localTypeDecls(String name) {    SimpleSet set = SimpleSet.emptySet;    for(int i = 0; i < getNumBodyDecl(); i++)      if(getBodyDecl(i).declaresType(name))        set = set.add(getBodyDecl(i).type(name));    return set;  }  syn lazy SimpleSet TypeDecl.memberTypes(String name) = SimpleSet.emptySet;  eq ClassDecl.memberTypes(String name) {    SimpleSet set = localTypeDecls(name);    if(!set.isEmpty()) return set;    for(Iterator outerIter = interfacesIterator(); outerIter.hasNext(); ) {      TypeDecl type = (TypeDecl)outerIter.next();      for(Iterator iter = type.memberTypes(name).iterator(); iter.hasNext(); ) {        TypeDecl decl = (TypeDecl)iter.next();        if(!decl.isPrivate() && decl.accessibleFrom(this))          set = set.add(decl);      }    }    if(hasSuperclass()) {      for(Iterator iter = superclass().memberTypes(name).iterator(); iter.hasNext(); ) {        TypeDecl decl = (TypeDecl)iter.next();        if(!decl.isPrivate() && decl.accessibleFrom(this)) {          set = set.add(decl);        }      }    }    return set;  }  eq InterfaceDecl.memberTypes(String name) {    SimpleSet set = localTypeDecls(name);    if(!set.isEmpty()) return set;    for(Iterator outerIter = superinterfacesIterator(); outerIter.hasNext(); ) {      TypeDecl typeDecl = (TypeDecl)outerIter.next();      for(Iterator iter = typeDecl.memberTypes(name).iterator(); iter.hasNext(); ) {        TypeDecl decl = (TypeDecl)iter.next();        if(!decl.isPrivate())          set = set.add(decl);      }    }    return set;  }}

⌨️ 快捷键说明

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