### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core Index: compiler/org/eclipse/jdt/internal/compiler/impl/IntConstant.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/IntConstant.java,v retrieving revision 1.25 diff -u -r1.25 IntConstant.java --- compiler/org/eclipse/jdt/internal/compiler/impl/IntConstant.java 28 Mar 2006 20:33:18 -0000 1.25 +++ compiler/org/eclipse/jdt/internal/compiler/impl/IntConstant.java 2 Feb 2009 15:15:01 -0000 @@ -13,7 +13,8 @@ public class IntConstant extends Constant { int value; - + + private static final IntConstant MIN_VALUE = new IntConstant(Integer.MIN_VALUE); private static final IntConstant MINUS_FOUR = new IntConstant(-4); private static final IntConstant MINUS_THREE = new IntConstant(-3); private static final IntConstant MINUS_TWO = new IntConstant(-2); @@ -33,6 +34,7 @@ public static Constant fromValue(int value) { switch (value) { + case Integer.MIN_VALUE : return IntConstant.MIN_VALUE; case -4 : return IntConstant.MINUS_FOUR; case -3 : return IntConstant.MINUS_THREE; case -2 : return IntConstant.MINUS_TWO; Index: compiler/org/eclipse/jdt/internal/compiler/impl/LongConstant.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/impl/LongConstant.java,v retrieving revision 1.23 diff -u -r1.23 LongConstant.java --- compiler/org/eclipse/jdt/internal/compiler/impl/LongConstant.java 28 Mar 2006 20:33:18 -0000 1.23 +++ compiler/org/eclipse/jdt/internal/compiler/impl/LongConstant.java 2 Feb 2009 15:15:01 -0000 @@ -12,12 +12,15 @@ public class LongConstant extends Constant { private static final LongConstant ZERO = new LongConstant(0L); +private static final LongConstant MIN_VALUE = new LongConstant(Long.MIN_VALUE); private long value; public static Constant fromValue(long value) { if (value == 0L) { return ZERO; + } else if (value == Long.MIN_VALUE) { + return MIN_VALUE; } return new LongConstant(value); } Index: compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java,v retrieving revision 1.25 diff -u -r1.25 LongLiteral.java --- compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java 6 Mar 2007 02:38:48 -0000 1.25 +++ compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteral.java 2 Feb 2009 15:15:01 -0000 @@ -17,7 +17,6 @@ import org.eclipse.jdt.internal.compiler.parser.ScannerHelper; public class LongLiteral extends NumberLiteral { - static final Constant FORMAT_ERROR = DoubleConstant.fromValue(1.0/0.0); // NaN; public LongLiteral(char[] token, int s,int e) { super(token, s,e); @@ -52,7 +51,7 @@ int digitValue ; if ((digitValue = ScannerHelper.digit(source[j++],radix)) < 0 ) { - constant = FORMAT_ERROR; return ; + return /*constant stays null*/ ; } if (digitValue >= 8) nbDigit = 4; @@ -65,7 +64,7 @@ computedValue = digitValue ; while (j 64) return /*constant stays null*/ ; @@ -137,19 +136,6 @@ (source[18] == '8') && (((this.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT) == 0)); } -public TypeBinding resolveType(BlockScope scope) { - // the format may be incorrect while the scanner could detect - // such error only on painfull tests...easier and faster here - - TypeBinding tb = super.resolveType(scope); - if (constant == FORMAT_ERROR) { - constant = Constant.NotAConstant; - scope.problemReporter().constantOutOfFormat(this); - this.resolvedType = null; - return null; - } - return tb; -} public void traverse(ASTVisitor visitor, BlockScope scope) { visitor.visit(this, scope); visitor.endVisit(this, scope); Index: compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java,v retrieving revision 1.12 diff -u -r1.12 LongLiteralMinValue.java --- compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java 6 Mar 2007 02:38:48 -0000 1.12 +++ compiler/org/eclipse/jdt/internal/compiler/ast/LongLiteralMinValue.java 2 Feb 2009 15:15:01 -0000 @@ -15,11 +15,10 @@ public class LongLiteralMinValue extends LongLiteral { final static char[] CharValue = new char[]{'-', '9','2','2','3','3','7','2','0','3','6','8','5','4','7','7','5','8','0','8','L'}; - final static Constant MIN_VALUE = LongConstant.fromValue(Long.MIN_VALUE) ; public LongLiteralMinValue(){ super(CharValue,0,0); - constant = MIN_VALUE; + constant = LongConstant.fromValue(Long.MIN_VALUE); } public void computeConstant() { Index: compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java,v retrieving revision 1.10 diff -u -r1.10 IntLiteralMinValue.java --- compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java 28 Mar 2006 20:29:57 -0000 1.10 +++ compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteralMinValue.java 2 Feb 2009 15:15:01 -0000 @@ -15,11 +15,10 @@ public class IntLiteralMinValue extends IntLiteral { final static char[] CharValue = new char[]{'-','2','1','4','7','4','8','3','6','4','8'}; - final static Constant MIN_VALUE = IntConstant.fromValue(Integer.MIN_VALUE) ; public IntLiteralMinValue() { - super(CharValue,0,0,Integer.MIN_VALUE); - constant = MIN_VALUE; + super(CharValue, 0,0, Integer.MIN_VALUE); + constant = IntConstant.fromValue(Integer.MIN_VALUE); } public void computeConstant(){ Index: compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java,v retrieving revision 1.23 diff -u -r1.23 IntLiteral.java --- compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java 28 Oct 2006 04:11:27 -0000 1.23 +++ compiler/org/eclipse/jdt/internal/compiler/ast/IntLiteral.java 2 Feb 2009 15:15:01 -0000 @@ -22,7 +22,6 @@ public static final IntLiteral One = new IntLiteral(new char[]{'1'},0,0,1);//used for ++ and -- - static final Constant FORMAT_ERROR = DoubleConstant.fromValue(1.0/0.0); // NaN; public IntLiteral(char[] token, int s, int e) { super(token, s,e); } @@ -71,7 +70,7 @@ while (j MAX) return /*constant stays null*/ ;}} else @@ -79,7 +78,7 @@ for (int i = 0 ; i < length;i++) { int digitValue ; if ((digitValue = ScannerHelper.digit(source[i],10)) < 0 ) - { constant = FORMAT_ERROR; return ;} + { return /*constant stays null*/ ; } computedValue = 10*computedValue + digitValue; if (computedValue > MAX) return /*constant stays null*/ ; }} @@ -122,19 +121,6 @@ (source[9] == '8') && (((this.bits & ASTNode.ParenthesizedMASK) >> ASTNode.ParenthesizedSHIFT) == 0)); } -public TypeBinding resolveType(BlockScope scope) { - // the format may be incorrect while the scanner could detect - // such an error only on painfull tests...easier and faster here - - TypeBinding tb = super.resolveType(scope); - if (constant == FORMAT_ERROR) { - constant = Constant.NotAConstant; - scope.problemReporter().constantOutOfFormat(this); - this.resolvedType = null; - return null; - } - return tb; -} public StringBuffer printExpression(int indent, StringBuffer output){ if (source == null) {