diff options
author | Olivier Thomann | 2005-11-09 12:25:03 -0500 |
---|---|---|
committer | Olivier Thomann | 2005-11-09 12:25:03 -0500 |
commit | 8d4c6e1c6c4bbed1ce86e17432fd480dd1f95b50 (patch) | |
tree | ad5b6be1608040d881cb534a0e6b08629338895c | |
parent | 82bf3172623e551b5e2247bd1c04d6f6f5720443 (diff) | |
download | eclipse.jdt.core-8d4c6e1c6c4bbed1ce86e17432fd480dd1f95b50.tar.gz eclipse.jdt.core-8d4c6e1c6c4bbed1ce86e17432fd480dd1f95b50.tar.xz eclipse.jdt.core-8d4c6e1c6c4bbed1ce86e17432fd480dd1f95b50.zip |
3.0 maintenance - Fix for 115408
3 files changed, 690 insertions, 4 deletions
diff --git a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/XLargeTest.java b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/XLargeTest.java index b5c30cb5d6..8b655e51f4 100644 --- a/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/XLargeTest.java +++ b/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/XLargeTest.java @@ -1,5 +1,9 @@ package org.eclipse.jdt.core.tests.compiler.regression; +import java.util.Map; + +import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; + import junit.framework.Test; import junit.framework.TestSuite; @@ -1850,7 +1854,687 @@ public void test007() { }, "SUCCESS"); } - +//https://bugs.eclipse.org/bugs/show_bug.cgi?id=115408 +public void test008() { + Map options = getCompilerOptions(); + options.put(CompilerOptions.OPTION_LineNumberAttribute, CompilerOptions.DO_NOT_GENERATE); + options.put(CompilerOptions.OPTION_LocalVariableAttribute, CompilerOptions.DO_NOT_GENERATE); + options.put(CompilerOptions.OPTION_SourceFileAttribute, CompilerOptions.DO_NOT_GENERATE); + this.runConformTest(new String[] { + "X.java", + "public class X extends B implements IToken {\n" + + " public X( int t, int endOffset, char [] filename, int line ) {\n" + + " super( t, filename, line );\n" + + " setOffsetAndLength( endOffset );\n" + + " }\n" + + " protected int offset;\n" + + " public int getOffset() { \n" + + " return offset; \n" + + " }\n" + + " public int getLength() {\n" + + " return getCharImage().length;\n" + + " }\n" + + " protected void setOffsetAndLength( int endOffset ) {\n" + + " this.offset = endOffset - getLength();\n" + + " }\n" + + " public String foo() { \n" + + " switch ( getType() ) {\n" + + " case IToken.tCOLONCOLON :\n" + + " return \"::\" ; //$NON-NLS-1$\n" + + " case IToken.tCOLON :\n" + + " return \":\" ; //$NON-NLS-1$\n" + + " case IToken.tSEMI :\n" + + " return \";\" ; //$NON-NLS-1$\n" + + " case IToken.tCOMMA :\n" + + " return \",\" ; //$NON-NLS-1$\n" + + " case IToken.tQUESTION :\n" + + " return \"?\" ; //$NON-NLS-1$\n" + + " case IToken.tLPAREN :\n" + + " return \"(\" ; //$NON-NLS-1$\n" + + " case IToken.tRPAREN :\n" + + " return \")\" ; //$NON-NLS-1$\n" + + " case IToken.tLBRACKET :\n" + + " return \"[\" ; //$NON-NLS-1$\n" + + " case IToken.tRBRACKET :\n" + + " return \"]\" ; //$NON-NLS-1$\n" + + " case IToken.tLBRACE :\n" + + " return \"{\" ; //$NON-NLS-1$\n" + + " case IToken.tRBRACE :\n" + + " return \"}\"; //$NON-NLS-1$\n" + + " case IToken.tPLUSASSIGN :\n" + + " return \"+=\"; //$NON-NLS-1$\n" + + " case IToken.tINCR :\n" + + " return \"++\" ; //$NON-NLS-1$\n" + + " case IToken.tPLUS :\n" + + " return \"+\"; //$NON-NLS-1$\n" + + " case IToken.tMINUSASSIGN :\n" + + " return \"-=\" ; //$NON-NLS-1$\n" + + " case IToken.tDECR :\n" + + " return \"--\" ; //$NON-NLS-1$\n" + + " case IToken.tARROWSTAR :\n" + + " return \"->*\" ; //$NON-NLS-1$\n" + + " case IToken.tARROW :\n" + + " return \"->\" ; //$NON-NLS-1$\n" + + " case IToken.tMINUS :\n" + + " return \"-\" ; //$NON-NLS-1$\n" + + " case IToken.tSTARASSIGN :\n" + + " return \"*=\" ; //$NON-NLS-1$\n" + + " case IToken.tSTAR :\n" + + " return \"*\" ; //$NON-NLS-1$\n" + + " case IToken.tMODASSIGN :\n" + + " return \"%=\" ; //$NON-NLS-1$\n" + + " case IToken.tMOD :\n" + + " return \"%\" ; //$NON-NLS-1$\n" + + " case IToken.tXORASSIGN :\n" + + " return \"^=\" ; //$NON-NLS-1$\n" + + " case IToken.tXOR :\n" + + " return \"^\" ; //$NON-NLS-1$\n" + + " case IToken.tAMPERASSIGN :\n" + + " return \"&=\" ; //$NON-NLS-1$\n" + + " case IToken.tAND :\n" + + " return \"&&\" ; //$NON-NLS-1$\n" + + " case IToken.tAMPER :\n" + + " return \"&\" ; //$NON-NLS-1$\n" + + " case IToken.tBITORASSIGN :\n" + + " return \"|=\" ; //$NON-NLS-1$\n" + + " case IToken.tOR :\n" + + " return \"||\" ; //$NON-NLS-1$\n" + + " case IToken.tBITOR :\n" + + " return \"|\" ; //$NON-NLS-1$\n" + + " case IToken.tCOMPL :\n" + + " return \"~\" ; //$NON-NLS-1$\n" + + " case IToken.tNOTEQUAL :\n" + + " return \"!=\" ; //$NON-NLS-1$\n" + + " case IToken.tNOT :\n" + + " return \"!\" ; //$NON-NLS-1$\n" + + " case IToken.tEQUAL :\n" + + " return \"==\" ; //$NON-NLS-1$\n" + + " case IToken.tASSIGN :\n" + + " return \"=\" ; //$NON-NLS-1$\n" + + " case IToken.tSHIFTL :\n" + + " return \"<<\" ; //$NON-NLS-1$\n" + + " case IToken.tLTEQUAL :\n" + + " return \"<=\" ; //$NON-NLS-1$\n" + + " case IToken.tLT :\n" + + " return \"<\"; //$NON-NLS-1$\n" + + " case IToken.tSHIFTRASSIGN :\n" + + " return \">>=\" ; //$NON-NLS-1$\n" + + " case IToken.tSHIFTR :\n" + + " return \">>\" ; //$NON-NLS-1$\n" + + " case IToken.tGTEQUAL :\n" + + " return \">=\" ; //$NON-NLS-1$\n" + + " case IToken.tGT :\n" + + " return \">\" ; //$NON-NLS-1$\n" + + " case IToken.tSHIFTLASSIGN :\n" + + " return \"<<=\" ; //$NON-NLS-1$\n" + + " case IToken.tELLIPSIS :\n" + + " return \"...\" ; //$NON-NLS-1$\n" + + " case IToken.tDOTSTAR :\n" + + " return \".*\" ; //$NON-NLS-1$\n" + + " case IToken.tDOT :\n" + + " return \".\" ; //$NON-NLS-1$\n" + + " case IToken.tDIVASSIGN :\n" + + " return \"/=\" ; //$NON-NLS-1$\n" + + " case IToken.tDIV :\n" + + " return \"/\" ; //$NON-NLS-1$\n" + + " case IToken.t_and :\n" + + " return Keywords.AND;\n" + + " case IToken.t_and_eq :\n" + + " return Keywords.AND_EQ ;\n" + + " case IToken.t_asm :\n" + + " return Keywords.ASM ;\n" + + " case IToken.t_auto :\n" + + " return Keywords.AUTO ;\n" + + " case IToken.t_bitand :\n" + + " return Keywords.BITAND ;\n" + + " case IToken.t_bitor :\n" + + " return Keywords.BITOR ;\n" + + " case IToken.t_bool :\n" + + " return Keywords.BOOL ;\n" + + " case IToken.t_break :\n" + + " return Keywords.BREAK ;\n" + + " case IToken.t_case :\n" + + " return Keywords.CASE ;\n" + + " case IToken.t_catch :\n" + + " return Keywords.CATCH ;\n" + + " case IToken.t_char :\n" + + " return Keywords.CHAR ;\n" + + " case IToken.t_class :\n" + + " return Keywords.CLASS ;\n" + + " case IToken.t_compl :\n" + + " return Keywords.COMPL ;\n" + + " case IToken.t_const :\n" + + " return Keywords.CONST ;\n" + + " case IToken.t_const_cast :\n" + + " return Keywords.CONST_CAST ;\n" + + " case IToken.t_continue :\n" + + " return Keywords.CONTINUE ;\n" + + " case IToken.t_default :\n" + + " return Keywords.DEFAULT ;\n" + + " case IToken.t_delete :\n" + + " return Keywords.DELETE ;\n" + + " case IToken.t_do :\n" + + " return Keywords.DO;\n" + + " case IToken.t_double :\n" + + " return Keywords.DOUBLE ;\n" + + " case IToken.t_dynamic_cast :\n" + + " return Keywords.DYNAMIC_CAST ;\n" + + " case IToken.t_else :\n" + + " return Keywords.ELSE;\n" + + " case IToken.t_enum :\n" + + " return Keywords.ENUM ;\n" + + " case IToken.t_explicit :\n" + + " return Keywords.EXPLICIT ;\n" + + " case IToken.t_export :\n" + + " return Keywords.EXPORT ;\n" + + " case IToken.t_extern :\n" + + " return Keywords.EXTERN;\n" + + " case IToken.t_false :\n" + + " return Keywords.FALSE;\n" + + " case IToken.t_float :\n" + + " return Keywords.FLOAT;\n" + + " case IToken.t_for :\n" + + " return Keywords.FOR;\n" + + " case IToken.t_friend :\n" + + " return Keywords.FRIEND;\n" + + " case IToken.t_goto :\n" + + " return Keywords.GOTO;\n" + + " case IToken.t_if :\n" + + " return Keywords.IF ;\n" + + " case IToken.t_inline :\n" + + " return Keywords.INLINE ;\n" + + " case IToken.t_int :\n" + + " return Keywords.INT ;\n" + + " case IToken.t_long :\n" + + " return Keywords.LONG ;\n" + + " case IToken.t_mutable :\n" + + " return Keywords.MUTABLE ;\n" + + " case IToken.t_namespace :\n" + + " return Keywords.NAMESPACE ;\n" + + " case IToken.t_new :\n" + + " return Keywords.NEW ;\n" + + " case IToken.t_not :\n" + + " return Keywords.NOT ;\n" + + " case IToken.t_not_eq :\n" + + " return Keywords.NOT_EQ; \n" + + " case IToken.t_operator :\n" + + " return Keywords.OPERATOR ;\n" + + " case IToken.t_or :\n" + + " return Keywords.OR ;\n" + + " case IToken.t_or_eq :\n" + + " return Keywords.OR_EQ;\n" + + " case IToken.t_private :\n" + + " return Keywords.PRIVATE ;\n" + + " case IToken.t_protected :\n" + + " return Keywords.PROTECTED ;\n" + + " case IToken.t_public :\n" + + " return Keywords.PUBLIC ;\n" + + " case IToken.t_register :\n" + + " return Keywords.REGISTER ;\n" + + " case IToken.t_reinterpret_cast :\n" + + " return Keywords.REINTERPRET_CAST ;\n" + + " case IToken.t_return :\n" + + " return Keywords.RETURN ;\n" + + " case IToken.t_short :\n" + + " return Keywords.SHORT ;\n" + + " case IToken.t_sizeof :\n" + + " return Keywords.SIZEOF ;\n" + + " case IToken.t_static :\n" + + " return Keywords.STATIC ;\n" + + " case IToken.t_static_cast :\n" + + " return Keywords.STATIC_CAST ;\n" + + " case IToken.t_signed :\n" + + " return Keywords.SIGNED ;\n" + + " case IToken.t_struct :\n" + + " return Keywords.STRUCT ;\n" + + " case IToken.t_switch :\n" + + " return Keywords.SWITCH ;\n" + + " case IToken.t_template :\n" + + " return Keywords.TEMPLATE ;\n" + + " case IToken.t_this :\n" + + " return Keywords.THIS ;\n" + + " case IToken.t_throw :\n" + + " return Keywords.THROW ;\n" + + " case IToken.t_true :\n" + + " return Keywords.TRUE ;\n" + + " case IToken.t_try :\n" + + " return Keywords.TRY ;\n" + + " case IToken.t_typedef :\n" + + " return Keywords.TYPEDEF ;\n" + + " case IToken.t_typeid :\n" + + " return Keywords.TYPEID ;\n" + + " case IToken.t_typename :\n" + + " return Keywords.TYPENAME ;\n" + + " case IToken.t_union :\n" + + " return Keywords.UNION ;\n" + + " case IToken.t_unsigned :\n" + + " return Keywords.UNSIGNED ;\n" + + " case IToken.t_using :\n" + + " return Keywords.USING ;\n" + + " case IToken.t_virtual :\n" + + " return Keywords.VIRTUAL ;\n" + + " case IToken.t_void :\n" + + " return Keywords.VOID ;\n" + + " case IToken.t_volatile :\n" + + " return Keywords.VOLATILE;\n" + + " case IToken.t_wchar_t :\n" + + " return Keywords.WCHAR_T ;\n" + + " case IToken.t_while :\n" + + " return Keywords.WHILE ;\n" + + " case IToken.t_xor :\n" + + " return Keywords.XOR ;\n" + + " case IToken.t_xor_eq :\n" + + " return Keywords.XOR_EQ ;\n" + + " case IToken.t__Bool :\n" + + " return Keywords._BOOL ;\n" + + " case IToken.t__Complex :\n" + + " return Keywords._COMPLEX ;\n" + + " case IToken.t__Imaginary :\n" + + " return Keywords._IMAGINARY ;\n" + + " case IToken.t_restrict :\n" + + " return Keywords.RESTRICT ;\n" + + " case IScanner.tPOUND:\n" + + " return \"#\"; //$NON-NLS-1$\n" + + " case IScanner.tPOUNDPOUND:\n" + + " return \"##\"; //$NON-NLS-1$\n" + + " case IToken.tEOC:\n" + + " return \"EOC\"; //$NON-NLS-1$\n" + + " default :\n" + + " return \"\"; //$NON-NLS-1$ \n" + + " } \n" + + " }\n" + + " public char[] getCharImage() {\n" + + " return getCharImage( getType() );\n" + + " }\n" + + " static public char[] getCharImage( int type ){\n" + + " return null;\n" + + " }\n" + + " public static void main(String[] args) {\n" + + " System.out.println(\"SUCCESS\");\n" + + " }\n" + + "}\n" + + "interface IToken {\n" + + " static public final int tIDENTIFIER = 1;\n" + + " static public final int tINTEGER = 2;\n" + + " static public final int tCOLONCOLON = 3;\n" + + " static public final int tCOLON = 4;\n" + + " static public final int tSEMI = 5;\n" + + " static public final int tCOMMA = 6;\n" + + " static public final int tQUESTION = 7;\n" + + " static public final int tLPAREN = 8;\n" + + " static public final int tRPAREN = 9;\n" + + " static public final int tLBRACKET = 10;\n" + + " static public final int tRBRACKET = 11;\n" + + " static public final int tLBRACE = 12;\n" + + " static public final int tRBRACE = 13;\n" + + " static public final int tPLUSASSIGN = 14;\n" + + " static public final int tINCR = 15;\n" + + " static public final int tPLUS = 16;\n" + + " static public final int tMINUSASSIGN = 17;\n" + + " static public final int tDECR = 18;\n" + + " static public final int tARROWSTAR = 19;\n" + + " static public final int tARROW = 20;\n" + + " static public final int tMINUS = 21;\n" + + " static public final int tSTARASSIGN = 22;\n" + + " static public final int tSTAR = 23;\n" + + " static public final int tMODASSIGN = 24;\n" + + " static public final int tMOD = 25;\n" + + " static public final int tXORASSIGN = 26;\n" + + " static public final int tXOR = 27;\n" + + " static public final int tAMPERASSIGN = 28;\n" + + " static public final int tAND = 29;\n" + + " static public final int tAMPER = 30;\n" + + " static public final int tBITORASSIGN = 31;\n" + + " static public final int tOR = 32;\n" + + " static public final int tBITOR = 33;\n" + + " static public final int tCOMPL = 34;\n" + + " static public final int tNOTEQUAL = 35;\n" + + " static public final int tNOT = 36;\n" + + " static public final int tEQUAL = 37;\n" + + " static public final int tASSIGN = 38;\n" + + " static public final int tSHIFTL = 40;\n" + + " static public final int tLTEQUAL = 41;\n" + + " static public final int tLT = 42;\n" + + " static public final int tSHIFTRASSIGN = 43;\n" + + " static public final int tSHIFTR = 44;\n" + + " static public final int tGTEQUAL = 45;\n" + + " static public final int tGT = 46;\n" + + " static public final int tSHIFTLASSIGN = 47;\n" + + " static public final int tELLIPSIS = 48;\n" + + " static public final int tDOTSTAR = 49;\n" + + " static public final int tDOT = 50;\n" + + " static public final int tDIVASSIGN = 51;\n" + + " static public final int tDIV = 52;\n" + + " static public final int t_and = 54;\n" + + " static public final int t_and_eq = 55;\n" + + " static public final int t_asm = 56;\n" + + " static public final int t_auto = 57;\n" + + " static public final int t_bitand = 58;\n" + + " static public final int t_bitor = 59;\n" + + " static public final int t_bool = 60;\n" + + " static public final int t_break = 61;\n" + + " static public final int t_case = 62;\n" + + " static public final int t_catch = 63;\n" + + " static public final int t_char = 64;\n" + + " static public final int t_class = 65;\n" + + " static public final int t_compl = 66;\n" + + " static public final int t_const = 67;\n" + + " static public final int t_const_cast = 69;\n" + + " static public final int t_continue = 70;\n" + + " static public final int t_default = 71;\n" + + " static public final int t_delete = 72;\n" + + " static public final int t_do = 73;\n" + + " static public final int t_double = 74;\n" + + " static public final int t_dynamic_cast = 75;\n" + + " static public final int t_else = 76;\n" + + " static public final int t_enum = 77;\n" + + " static public final int t_explicit = 78;\n" + + " static public final int t_export = 79;\n" + + " static public final int t_extern = 80;\n" + + " static public final int t_false = 81;\n" + + " static public final int t_float = 82;\n" + + " static public final int t_for = 83;\n" + + " static public final int t_friend = 84;\n" + + " static public final int t_goto = 85;\n" + + " static public final int t_if = 86;\n" + + " static public final int t_inline = 87;\n" + + " static public final int t_int = 88;\n" + + " static public final int t_long = 89;\n" + + " static public final int t_mutable = 90;\n" + + " static public final int t_namespace = 91;\n" + + " static public final int t_new = 92;\n" + + " static public final int t_not = 93;\n" + + " static public final int t_not_eq = 94;\n" + + " static public final int t_operator = 95;\n" + + " static public final int t_or = 96;\n" + + " static public final int t_or_eq = 97;\n" + + " static public final int t_private = 98;\n" + + " static public final int t_protected = 99;\n" + + " static public final int t_public = 100;\n" + + " static public final int t_register = 101;\n" + + " static public final int t_reinterpret_cast = 102;\n" + + " static public final int t_return = 103;\n" + + " static public final int t_short = 104;\n" + + " static public final int t_sizeof = 105;\n" + + " static public final int t_static = 106;\n" + + " static public final int t_static_cast = 107;\n" + + " static public final int t_signed = 108;\n" + + " static public final int t_struct = 109;\n" + + " static public final int t_switch = 110;\n" + + " static public final int t_template = 111;\n" + + " static public final int t_this = 112;\n" + + " static public final int t_throw = 113;\n" + + " static public final int t_true = 114;\n" + + " static public final int t_try = 115;\n" + + " static public final int t_typedef = 116;\n" + + " static public final int t_typeid = 117;\n" + + " static public final int t_typename = 118;\n" + + " static public final int t_union = 119;\n" + + " static public final int t_unsigned = 120;\n" + + " static public final int t_using = 121;\n" + + " static public final int t_virtual = 122;\n" + + " static public final int t_void = 123;\n" + + " static public final int t_volatile = 124;\n" + + " static public final int t_wchar_t = 125;\n" + + " static public final int t_while = 126;\n" + + " static public final int t_xor = 127;\n" + + " static public final int t_xor_eq = 128;\n" + + " static public final int tFLOATINGPT = 129;\n" + + " static public final int tSTRING = 130;\n" + + " static public final int tLSTRING = 131;\n" + + " static public final int tCHAR = 132;\n" + + " static public final int tLCHAR = 133;\n" + + " static public final int t__Bool = 134;\n" + + " static public final int t__Complex = 135;\n" + + " static public final int t__Imaginary = 136;\n" + + " static public final int t_restrict = 137;\n" + + " static public final int tMACROEXP = 138;\n" + + " static public final int tPOUNDPOUND = 139;\n" + + " static public final int tCOMPLETION = 140;\n" + + " static public final int tEOC = 141; // End of Completion\\n\" + \n" + + " static public final int tLAST = 141;\n" + + "}\n" + + "class Keywords {\n" + + " public static final String CAST = \"cast\"; //$NON-NLS-1$\n" + + " public static final String ALIGNOF = \"alignof\"; //$NON-NLS-1$\n" + + " public static final String TYPEOF = \"typeof\"; //$NON-NLS-1$\n" + + " public static final String cpMIN = \"<?\"; //$NON-NLS-1$\n" + + " public static final String cpMAX = \">?\"; //$NON-NLS-1$\n" + + " public static final String _BOOL = \"_Bool\"; //$NON-NLS-1$\n" + + " public static final String _COMPLEX = \"_Complex\"; //$NON-NLS-1$\n" + + " public static final String _IMAGINARY = \"_Imaginary\"; //$NON-NLS-1$\n" + + " public static final String AND = \"and\"; //$NON-NLS-1$\n" + + " public static final String AND_EQ = \"and_eq\"; //$NON-NLS-1$\n" + + " public static final String ASM = \"asm\"; //$NON-NLS-1$\n" + + " public static final String AUTO = \"auto\"; //$NON-NLS-1$\n" + + " public static final String BITAND = \"bitand\"; //$NON-NLS-1$\n" + + " public static final String BITOR = \"bitor\"; //$NON-NLS-1$\n" + + " public static final String BOOL = \"bool\"; //$NON-NLS-1$\n" + + " public static final String BREAK = \"break\"; //$NON-NLS-1$\n" + + " public static final String CASE = \"case\"; //$NON-NLS-1$\n" + + " public static final String CATCH = \"catch\"; //$NON-NLS-1$\n" + + " public static final String CHAR = \"char\"; //$NON-NLS-1$\n" + + " public static final String CLASS = \"class\"; //$NON-NLS-1$\n" + + " public static final String COMPL = \"compl\"; //$NON-NLS-1$\n" + + " public static final String CONST = \"const\"; //$NON-NLS-1$\n" + + " public static final String CONST_CAST = \"const_cast\"; //$NON-NLS-1$\n" + + " public static final String CONTINUE = \"continue\"; //$NON-NLS-1$\n" + + " public static final String DEFAULT = \"default\"; //$NON-NLS-1$\n" + + " public static final String DELETE = \"delete\"; //$NON-NLS-1$\n" + + " public static final String DO = \"do\"; //$NON-NLS-1$\n" + + " public static final String DOUBLE = \"double\"; //$NON-NLS-1$\n" + + " public static final String DYNAMIC_CAST = \"dynamic_cast\"; //$NON-NLS-1$\n" + + " public static final String ELSE = \"else\"; //$NON-NLS-1$\n" + + " public static final String ENUM = \"enum\"; //$NON-NLS-1$\n" + + " public static final String EXPLICIT = \"explicit\"; //$NON-NLS-1$\n" + + " public static final String EXPORT = \"export\"; //$NON-NLS-1$\n" + + " public static final String EXTERN = \"extern\"; //$NON-NLS-1$\n" + + " public static final String FALSE = \"false\"; //$NON-NLS-1$\n" + + " public static final String FLOAT = \"float\"; //$NON-NLS-1$\n" + + " public static final String FOR = \"for\"; //$NON-NLS-1$\n" + + " public static final String FRIEND = \"friend\"; //$NON-NLS-1$\n" + + " public static final String GOTO = \"goto\"; //$NON-NLS-1$\n" + + " public static final String IF = \"if\"; //$NON-NLS-1$\n" + + " public static final String INLINE = \"inline\"; //$NON-NLS-1$\n" + + " public static final String INT = \"int\"; //$NON-NLS-1$\n" + + " public static final String LONG = \"long\"; //$NON-NLS-1$\n" + + " public static final String LONG_LONG = \"long long\"; //$NON-NLS-1$\n" + + " public static final String MUTABLE = \"mutable\"; //$NON-NLS-1$\n" + + " public static final String NAMESPACE = \"namespace\"; //$NON-NLS-1$\n" + + " public static final String NEW = \"new\"; //$NON-NLS-1$\n" + + " public static final String NOT = \"not\"; //$NON-NLS-1$\n" + + " public static final String NOT_EQ = \"not_eq\"; //$NON-NLS-1$\n" + + " public static final String OPERATOR = \"operator\"; //$NON-NLS-1$\n" + + " public static final String OR = \"or\"; //$NON-NLS-1$\n" + + " public static final String OR_EQ = \"or_eq\"; //$NON-NLS-1$\n" + + " public static final String PRIVATE = \"private\"; //$NON-NLS-1$\n" + + " public static final String PROTECTED = \"protected\"; //$NON-NLS-1$\n" + + " public static final String PUBLIC = \"public\"; //$NON-NLS-1$\n" + + " public static final String REGISTER = \"register\"; //$NON-NLS-1$\n" + + " public static final String REINTERPRET_CAST = \"reinterpret_cast\"; //$NON-NLS-1$\n" + + " public static final String RESTRICT = \"restrict\"; //$NON-NLS-1$\n" + + " public static final String RETURN = \"return\"; //$NON-NLS-1$\n" + + " public static final String SHORT = \"short\"; //$NON-NLS-1$\n" + + " public static final String SIGNED = \"signed\"; //$NON-NLS-1$\n" + + " public static final String SIZEOF = \"sizeof\"; //$NON-NLS-1$\n" + + " public static final String STATIC = \"static\"; //$NON-NLS-1$\n" + + " public static final String STATIC_CAST = \"static_cast\"; //$NON-NLS-1$\n" + + " public static final String STRUCT = \"struct\"; //$NON-NLS-1$\n" + + " public static final String SWITCH = \"switch\"; //$NON-NLS-1$\n" + + " public static final String TEMPLATE = \"template\"; //$NON-NLS-1$\n" + + " public static final String THIS = \"this\"; //$NON-NLS-1$\n" + + " public static final String THROW = \"throw\"; //$NON-NLS-1$\n" + + " public static final String TRUE = \"true\"; //$NON-NLS-1$\n" + + " public static final String TRY = \"try\"; //$NON-NLS-1$\n" + + " public static final String TYPEDEF = \"typedef\"; //$NON-NLS-1$\n" + + " public static final String TYPEID = \"typeid\"; //$NON-NLS-1$\n" + + " public static final String TYPENAME = \"typename\"; //$NON-NLS-1$\n" + + " public static final String UNION = \"union\"; //$NON-NLS-1$\n" + + " public static final String UNSIGNED = \"unsigned\"; //$NON-NLS-1$\n" + + " public static final String USING = \"using\"; //$NON-NLS-1$\n" + + " public static final String VIRTUAL = \"virtual\"; //$NON-NLS-1$\n" + + " public static final String VOID = \"void\"; //$NON-NLS-1$\n" + + " public static final String VOLATILE = \"volatile\"; //$NON-NLS-1$\n" + + " public static final String WCHAR_T = \"wchar_t\"; //$NON-NLS-1$\n" + + " public static final String WHILE = \"while\"; //$NON-NLS-1$\n" + + " public static final String XOR = \"xor\"; //$NON-NLS-1$\n" + + " public static final String XOR_EQ = \"xor_eq\"; //$NON-NLS-1$\n" + + " public static final char[] c_BOOL = \"_Bool\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] c_COMPLEX = \"_Complex\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] c_IMAGINARY = \"_Imaginary\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cAND = \"and\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cAND_EQ = \"and_eq\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cASM = \"asm\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cAUTO = \"auto\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cBITAND = \"bitand\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cBITOR = \"bitor\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cBOOL = \"bool\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cBREAK = \"break\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cCASE = \"case\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cCATCH = \"catch\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cCHAR = \"char\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cCLASS = \"class\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cCOMPL = \"compl\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cCONST = \"const\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cCONST_CAST = \"const_cast\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cCONTINUE = \"continue\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cDEFAULT = \"default\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cDELETE = \"delete\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cDO = \"do\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cDOUBLE = \"double\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cDYNAMIC_CAST = \"dynamic_cast\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cELSE = \"else\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cENUM = \"enum\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cEXPLICIT = \"explicit\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cEXPORT = \"export\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cEXTERN = \"extern\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cFALSE = \"false\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cFLOAT = \"float\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cFOR = \"for\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cFRIEND = \"friend\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cGOTO = \"goto\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cIF = \"if\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cINLINE = \"inline\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cINT = \"int\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cLONG = \"long\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cMUTABLE = \"mutable\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cNAMESPACE = \"namespace\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cNEW = \"new\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cNOT = \"not\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cNOT_EQ = \"not_eq\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cOPERATOR = \"operator\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cOR = \"or\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cOR_EQ = \"or_eq\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cPRIVATE = \"private\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cPROTECTED = \"protected\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cPUBLIC = \"public\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cREGISTER = \"register\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cREINTERPRET_CAST = \"reinterpret_cast\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cRESTRICT = \"restrict\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cRETURN = \"return\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cSHORT = \"short\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cSIGNED = \"signed\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cSIZEOF = \"sizeof\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cSTATIC = \"static\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cSTATIC_CAST = \"static_cast\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cSTRUCT = \"struct\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cSWITCH = \"switch\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cTEMPLATE = \"template\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cTHIS = \"this\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cTHROW = \"throw\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cTRUE = \"true\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cTRY = \"try\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cTYPEDEF = \"typedef\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cTYPEID = \"typeid\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cTYPENAME = \"typename\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cUNION = \"union\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cUNSIGNED = \"unsigned\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cUSING = \"using\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cVIRTUAL = \"virtual\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cVOID = \"void\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cVOLATILE = \"volatile\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cWCHAR_T = \"wchar_t\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cWHILE = \"while\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cXOR = \"xor\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cXOR_EQ = \"xor_eq\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpCOLONCOLON = \"::\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpCOLON = \":\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpSEMI = \";\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpCOMMA = \",\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpQUESTION = \"?\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpLPAREN = \"(\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpRPAREN = \")\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpLBRACKET = \"[\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpRBRACKET = \"]\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpLBRACE = \"{\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpRBRACE = \"}\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpPLUSASSIGN = \"+=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpINCR = \"++\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpPLUS = \"+\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpMINUSASSIGN = \"-=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpDECR = \"--\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpARROWSTAR = \"->*\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpARROW = \"->\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpMINUS = \"-\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpSTARASSIGN = \"*=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpSTAR = \"*\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpMODASSIGN = \"%=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpMOD = \"%\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpXORASSIGN = \"^=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpXOR = \"^\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpAMPERASSIGN = \"&=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpAND = \"&&\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpAMPER = \"&\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpBITORASSIGN = \"|=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpOR = \"||\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpBITOR = \"|\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpCOMPL = \"~\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpNOTEQUAL = \"!=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpNOT = \"!\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpEQUAL = \"==\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpASSIGN =\"=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpSHIFTL = \"<<\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpLTEQUAL = \"<=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpLT = \"<\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpSHIFTRASSIGN = \">>=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpSHIFTR = \">>\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpGTEQUAL = \">=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpGT = \">\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpSHIFTLASSIGN = \"<<=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpELLIPSIS = \"...\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpDOTSTAR = \".*\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpDOT = \".\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpDIVASSIGN = \"/=\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpDIV = \"/\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpPOUND = \"#\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cpPOUNDPOUND = \"##\".toCharArray(); //$NON-NLS-1$\n" + + " // preprocessor keywords\\n\" + \n" + + " public static final char[] cIFDEF = \"ifdef\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cIFNDEF = \"ifndef\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cELIF = \"elif\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cENDIF = \"endif\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cINCLUDE = \"include\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cDEFINE = \"define\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cUNDEF = \"undef\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cERROR = \"error\".toCharArray(); //$NON-NLS-1$\n" + + " public static final char[] cINCLUDE_NEXT = \"include_next\".toCharArray(); //$NON-NLS-1$\n" + + "}\n" + + "interface IScanner {\n" + + " public static final int tPOUNDPOUND = -6;\n" + + " public static final int tPOUND = -7;\n" + + "}\n" + + "abstract class B {\n" + + " public B( int type, char [] filename, int lineNumber ) {\n" + + " }\n" + + " public int getType() { return 0; }\n" + + "}", + }, + "SUCCESS", + null, + true, + null, + options); +} public static Class testClass() { return XLargeTest.class; } diff --git a/org.eclipse.jdt.core/buildnotes_jdt-core.html b/org.eclipse.jdt.core/buildnotes_jdt-core.html index ee571f21f7..80fea9f866 100644 --- a/org.eclipse.jdt.core/buildnotes_jdt-core.html +++ b/org.eclipse.jdt.core/buildnotes_jdt-core.html @@ -56,7 +56,9 @@ What's new in this drop</h2> </ul> <h3>Problem Reports Fixed</h3> -<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114855">114855</a> +<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=115408">115408</a> +[compiler] ArrayIndexOutOfBoundsException in CodeStream.java +<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=114855">114855</a> [compiler] OutOfMemoryError compiling deeply nested try-catch <br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=88351">88351</a> Compiler dependency problem in 2.1.3 & the latest 3.0.2 build diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java index 4d7a6ef338..4bb4bbdb30 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/codegen/CodeStream.java @@ -4682,8 +4682,8 @@ public void resetForProblemClinit(ClassFile targetClassFile) { private final void resizeByteArray() { int length = bCodeStream.length; int requiredSize = length + length; - if (classFileOffset > requiredSize) { - // must be sure to grow by enough + if (classFileOffset >= requiredSize) { + // must be sure to grow enough requiredSize = classFileOffset + length; } System.arraycopy(bCodeStream, 0, bCodeStream = new byte[requiredSize], 0, length); |