changes + annotation generation
remove the '$' in the C code as tilera does not allow it
Fix some inner class related bugs: 1) whenever a class is added into the class list of state, it should check its inner class list to do addOuterClassParam() and addOuterClassReferences() operations, previously a lot of this checking is missing 2) previously the ith lexically enclosing instance for a deeply nested inner class was wrongly passed in to the inner class' constructor
Fix another inner class bug: every inner class along the inherited chain has a pointer to its enclosing class; If an inner class inherits from another inner class, when it calls the constructor of its super class, it passes in its enclosing class for the superenclosing class by default
Fix another inner class bug: an inner class which is declared in a *static context* should not have lexically enclosing instances, instead, if it is immediately declared within a static method or static initializer then the inner class does have an enclosing block, which is the innermost block statement lexically enclosing the declaration of the inner class.
Bug fix of inner class: only add LIVE local variables that are referred to in an anonymous inner class into the inner class' fields. Previously we add all the local variables into an anonymous inner class which could be buggy. Also add a super(...) invocation into the anonymous constructor of an anonymous inner class according to the Java spec.
Add a new feature for inner class: an anonymous inner class can now refer to the local variables in its defintion context. The fix is not completely apply to Java specification in that we do not check if the local variables are final. According to the Java spec, only final variables can be referred to by the snonymous inner class
Make the compiler to support super.X/L.super.X which access super class' fields. We might still not be able to correctly support access to super class' methods like super.foo(). Also fix another nested class bug. Previously the unit test StaticInnerClassTest was broken because of newly added inner class support. Note that nested class (static inner class) should NOT have reference to its surrounding class in its constructor as it is static and can be created without any outer class instance.
Fix inner class implementation. Now code like inner.this.X/outer.this.X work correctly. And the inner class can correctly refer to the fields/methods defined in the surrounding class.
Handling the case NAME DOT THIS for inner classes
push a bunch of old changes i had related to inner classes and such... hope this doesn't break anything for anyone
Bug fixed
This completes the barebones versions of inner class, we are now able to access fields of surrounding classes in any level, need to check for compatibility with language spec especially use of statics and so forth
As discussed with Prof. Demsky/Jim, the constructor of inner class now by default takes the surrounding class arg based on the scope and the block statement for initializing is also set up. TODO: redirect inner class references to surrounding class. the test case substituting thisbash.outerclass works in the current build
Please don't check in debug lines, por favor :)
Some changes for signature of constructor of inner classes, need to add assignment
Step 1: Creating instances of all levels of enclosing classes in an inner class. TODO need to populate them while actually creating the inner class and indirect all accesses as necessay
Adding support for default constructor to be created in case ctor is not found
Changes for galois porting
Be able to get def reach state out at a given program point