It supports only two language levels: functional Java (also called the
intermediate leve) and full Java. The revised code base more closely
conforms to this simple view of language levels but the test code still
retains the Elementary/Intermediate/Advanced distinction because the
refactored code base still provides legacy support for the Elementary,
Intermediate, and Advanced language levels. Both Elementary and
Intermediate legacy files are converted to functional Java files while
Advanced legacy file are converted to full Java files. The conversion
is permissive: the functional language level generalizes both the
legacy Elementary and legacy Intermediate language level. Similarly,
the full Java language generalizes the legacy Advanced language level.
As far as we know, all old code (written in any language level) works
unchanged in this refactored version.
This refactoring contains a very large number of debugging output
statements that will be commented out in the next commit.
The following files were modified (I don't know why the Woah.class file
was included):
AM testFiles/fully/qualified/Woah.class
A testFiles/fully/qualified/Woah.java
M testFiles/forAdvancedLevelTest/ComplexAnonClassInstantiation.expected
M testFiles/forAdvancedLevelTest/RefInnerClassCrazy.expected
M testFiles/forAdvancedLevelTest/RefInnerClassCrazy.dj2
M testFiles/forAdvancedLevelTest/ComplexAnonClassInstantiation.dj2
M testFiles/forAdvancedLevelTest/RefInnerClassOfMethodWithinMethod.dj2
M testFiles/forAdvancedLevelTest/RefInnerClassOfMethodWithinMethod.expected
M src/edu/rice/cs/javalanglevels/JExprParseException.java
M src/edu/rice/cs/javalanglevels/IntermediateLevelTest.java
M src/edu/rice/cs/javalanglevels/TypeChecker.java
A src/edu/rice/cs/javalanglevels/SpecialTypeChecker.java
M src/edu/rice/cs/javalanglevels/ArrayData.java
M src/edu/rice/cs/javalanglevels/Data.java
M src/edu/rice/cs/javalanglevels/MethodData.java
M src/edu/rice/cs/javalanglevels/Symboltable.java
M src/edu/rice/cs/javalanglevels/LValueTypeChecker.java
M src/edu/rice/cs/javalanglevels/VariableData.java
M src/edu/rice/cs/javalanglevels/BodyTypeChecker.java
M src/edu/rice/cs/javalanglevels/PackageData.java
M src/edu/rice/cs/javalanglevels/TryCatchBodyTypeChecker.java
M src/edu/rice/cs/javalanglevels/BodyData.java
M src/edu/rice/cs/javalanglevels/IntermediateVisitor.java
M src/edu/rice/cs/javalanglevels/AdvancedLevelTest.java
M src/edu/rice/cs/javalanglevels/InstanceData.java
M src/edu/rice/cs/javalanglevels/SymbolData.java
M src/edu/rice/cs/javalanglevels/Augmentor.java
D src/edu/rice/cs/javalanglevels/Bob.java
M src/edu/rice/cs/javalanglevels/LanguageLevelConverter.java
M src/edu/rice/cs/javalanglevels/InterfaceBodyTypeChecker.java
M src/edu/rice/cs/javalanglevels/LValueWithValueTypeChecker.java
M src/edu/rice/cs/javalanglevels/ClassBodyTypeChecker.java
M src/edu/rice/cs/javalanglevels/TypeData.java
M src/edu/rice/cs/javalanglevels/SourceInfo.java
A src/edu/rice/cs/javalanglevels/Command.java
M src/edu/rice/cs/javalanglevels/BlockData.java
A src/edu/rice/cs/javalanglevels/FullJavaVisitor.java
M src/edu/rice/cs/javalanglevels/ExpressionTypeChecker.java
M src/edu/rice/cs/javalanglevels/BodyBodyIntermediateVisitor.java
M src/edu/rice/cs/javalanglevels/InterfaceBodyIntermediateVisitor.java
M src/edu/rice/cs/javalanglevels/ConstructorBodyTypeChecker.java
M src/edu/rice/cs/javalanglevels/LanguageLevelVisitor.java
M src/edu/rice/cs/javalanglevels/Pair.java
M src/edu/rice/cs/javalanglevels/util/Log.java
M src/edu/rice/cs/javalanglevels/util/ScrollableDialog.java
M src/edu/rice/cs/javalanglevels/util/BorderlessScrollPane.java
M src/edu/rice/cs/javalanglevels/util/Utilities.java
M src/edu/rice/cs/javalanglevels/ElementaryLevelTest.java
M src/edu/rice/cs/javalanglevels/ClassBodyIntermediateVisitor.java
M src/edu/rice/cs/javalanglevels/JExpressionIFPrunableDepthFirstVisitor.java