ecd.setModifiers(parseModifiersList(pn.getChild("modifiers")));
parseEnumBody(ecd, pn.getChild("enumbody"));
- if (analyzeset != null)
- analyzeset.add(ecd);
- ecd.setSourceFileName(currsourcefile);
- state.addClass(ecd);
+ addClass2State(ecd);
popChainMaps();
return ecd;
parseAnnotationTypeBody(cn,pn.getChild("body"));
popChainMaps();
- if (analyzeset != null)
- analyzeset.add(cn);
- cn.setSourceFileName(currsourcefile);
- state.addClass(cn);
+ addClass2State(cn);
return cn;
}
}
cn.setModifiers(parseModifiersList(pn.getChild("modifiers")));
parseInterfaceBody(cn, pn.getChild("interfacebody"));
- if (analyzeset != null)
- analyzeset.add(cn);
- cn.setSourceFileName(currsourcefile);
- state.addClass(cn);
+ addClass2State(cn);
popChainMaps();
return cn;
}
return tel;
}
+ private void addClass2State(ClassDescriptor cn) {
+ if (analyzeset != null)
+ analyzeset.add(cn);
+ cn.setSourceFileName(currsourcefile);
+ state.addClass(cn);
+ // create this$n representing a final reference to the next surrounding class. each inner class should have whatever inner class
+ // pointers the surrounding class has + a pointer to the surrounding class.
+ if( true )
+ {
+ this.isRunningRecursiveInnerClass = true; //fOR dEBUGGING PURPOSES IN ORDER TO DUMP STRINGS WHILE IN THIS CODE PATH
+ addOuterClassReferences( cn, cn, 0 );
+ addOuterClassParam( cn, cn, 0 );
+ this.isRunningRecursiveInnerClass = false;
+ }
+ }
+
public ClassDescriptor parseTypeDecl(ParseNode pn) {
ClassDescriptor cn=new ClassDescriptor(packageName, pn.getChild("name").getTerminal(), false);
pushChainMaps();
popChainMaps();
cn.setSourceFileName(currsourcefile);
-
-
- if (analyzeset != null)
- analyzeset.add(cn);
- state.addClass(cn);
-//create this$n representing a final reference to the next surrounding class. each inner class should have whatever inner class
-//pointers the surrounding class has + a pointer to the surrounding class.
- if( true )
- {
- this.isRunningRecursiveInnerClass = true; //fOR dEBUGGING PURPOSES IN ORDER TO DUMP STRINGS WHILE IN THIS CODE PATH
- addOuterClassReferences( cn, 0 );
- addOuterClassParam( cn, 0 );
- this.isRunningRecursiveInnerClass = false;
- }
+ addClass2State(cn);
+
return cn;
}
state.addTreeCode(md, obn);
}
-private void addOuterClassParam( ClassDescriptor cn, int depth )
+private void addOuterClassParam( ClassDescriptor cn, ClassDescriptor ocn, int depth )
{
Iterator nullCheckItr = cn.getInnerClasses();
if( false == nullCheckItr.hasNext() )
return;
//create a typedescriptor of type cn
- TypeDescriptor theTypeDesc = new TypeDescriptor( cn );
+ TypeDescriptor theTypeDesc = new TypeDescriptor( ocn );
for(Iterator it=cn.getInnerClasses(); it.hasNext(); ) {
ClassDescriptor icd=(ClassDescriptor)it.next();
//System.out.println( "The added param is " + md.toString() + "\n" );
}
}
- addOuterClassParam( icd, depth + 1 );
+ addOuterClassParam( icd, ocn, depth + 1 );
}
}
-private void addOuterClassReferences( ClassDescriptor cn, int depth )
+private void addOuterClassReferences( ClassDescriptor cn, ClassDescriptor ocn, int depth )
{
//SYMBOLTABLE does not have a length or empty method, hence could not define a hasInnerClasses method in classDescriptor
Iterator nullCheckItr = cn.getInnerClasses();
if( false == nullCheckItr.hasNext() )
return;
- String tempCopy = cn.getClassName();
+ String tempCopy = ocn.getClassName();
//MESSY HACK FOLLOWS
int i = 0;
//System.out.println( fieldTable.toString() );
}*/
icd.setInnerDepth( depth + 1 );
- addOuterClassReferences( icd, depth + 1 );
+ addOuterClassReferences( icd, ocn, depth + 1 );
}
}
}
popChainMaps();
- if (analyzeset != null)
- analyzeset.add(icn);
- icn.setSourceFileName(currsourcefile);
- state.addClass(icn);
+ addClass2State(icn);
return icn;
}
}
popChainMaps();
- if (analyzeset != null)
- analyzeset.add(cnnew);
- cnnew.setSourceFileName(currsourcefile);
- state.addClass(cnnew);
+ addClass2State(cnnew);
return con;
} else if (isNode(pn,"createarray")) {