View | Details | Raw Unified | Return to bug 240349
Collapse All | Expand All

(-)model/org/eclipse/jdt/internal/core/util/Disassembler.java (-7 / +11 lines)
Lines 563-577 Link Here
563
		CharOperation.replace(methodDescriptor, '/', '.');
563
		CharOperation.replace(methodDescriptor, '/', '.');
564
		final boolean isVarArgs = isVarArgs(methodInfo);
564
		final boolean isVarArgs = isVarArgs(methodInfo);
565
		char[] methodHeader = null;
565
		char[] methodHeader = null;
566
		char[][] parameterNames = null;
567
		if (!methodInfo.isClinit()) {
568
			parameterNames = getParameterNames(methodDescriptor, codeAttribute, accessFlags);
569
		}
566
		if (methodInfo.isConstructor()) {
570
		if (methodInfo.isConstructor()) {
567
			if (checkMode(mode, WORKING_COPY) && signatureAttribute != null) {
571
			if (checkMode(mode, WORKING_COPY) && signatureAttribute != null) {
568
				final char[] signature = signatureAttribute.getSignature();
572
				final char[] signature = signatureAttribute.getSignature();
569
				CharOperation.replace(signature, '/', '.');
573
				CharOperation.replace(signature, '/', '.');
570
				disassembleGenericSignature(mode, buffer, signature);
574
				disassembleGenericSignature(mode, buffer, signature);
571
				buffer.append(' ');
575
				buffer.append(' ');
572
				methodHeader = Signature.toCharArray(signature, returnClassName(className, '.', COMPACT), getParameterNames(methodDescriptor, codeAttribute, accessFlags) , !checkMode(mode, COMPACT), false, isVarArgs);
576
				methodHeader = Signature.toCharArray(signature, returnClassName(className, '.', COMPACT), parameterNames, !checkMode(mode, COMPACT), false, isVarArgs);
573
			} else {
577
			} else {
574
				methodHeader = Signature.toCharArray(methodDescriptor, returnClassName(className, '.', COMPACT), getParameterNames(methodDescriptor, codeAttribute, accessFlags) , !checkMode(mode, COMPACT), false, isVarArgs);
578
				methodHeader = Signature.toCharArray(methodDescriptor, returnClassName(className, '.', COMPACT), parameterNames, !checkMode(mode, COMPACT), false, isVarArgs);
575
			}
579
			}
576
		} else if (methodInfo.isClinit()) {
580
		} else if (methodInfo.isClinit()) {
577
			methodHeader = Messages.bind(Messages.classfileformat_clinitname).toCharArray();
581
			methodHeader = Messages.bind(Messages.classfileformat_clinitname).toCharArray();
Lines 581-589 Link Here
581
				CharOperation.replace(signature, '/', '.');
585
				CharOperation.replace(signature, '/', '.');
582
				disassembleGenericSignature(mode, buffer, signature);
586
				disassembleGenericSignature(mode, buffer, signature);
583
				buffer.append(' ');
587
				buffer.append(' ');
584
				methodHeader = Signature.toCharArray(signature, methodInfo.getName(), getParameterNames(methodDescriptor, codeAttribute, accessFlags) , !checkMode(mode, COMPACT), true, isVarArgs);
588
				methodHeader = Signature.toCharArray(signature, methodInfo.getName(), parameterNames, !checkMode(mode, COMPACT), true, isVarArgs);
585
			} else {
589
			} else {
586
				methodHeader = Signature.toCharArray(methodDescriptor, methodInfo.getName(), getParameterNames(methodDescriptor, codeAttribute, accessFlags) , !checkMode(mode, COMPACT), true, isVarArgs);
590
				methodHeader = Signature.toCharArray(methodDescriptor, methodInfo.getName(), parameterNames, !checkMode(mode, COMPACT), true, isVarArgs);
587
			}
591
			}
588
		}
592
		}
589
		if (checkMode(mode, DETAILED) && (runtimeInvisibleParameterAnnotationsAttribute != null || runtimeVisibleParameterAnnotationsAttribute != null)) {
593
		if (checkMode(mode, DETAILED) && (runtimeInvisibleParameterAnnotationsAttribute != null || runtimeVisibleParameterAnnotationsAttribute != null)) {
Lines 704-710 Link Here
704
708
705
		if (checkMode(mode, SYSTEM | DETAILED)) {
709
		if (checkMode(mode, SYSTEM | DETAILED)) {
706
			if (codeAttribute != null) {
710
			if (codeAttribute != null) {
707
				disassemble(codeAttribute, buffer, lineSeparator, tabNumber, mode);
711
				disassemble(codeAttribute, parameterNames, methodDescriptor, (accessFlags & IModifierConstants.ACC_STATIC) != 0, buffer, lineSeparator, tabNumber, mode);
708
			}
712
			}
709
		}
713
		}
710
		if (checkMode(mode, SYSTEM)) {
714
		if (checkMode(mode, SYSTEM)) {
Lines 1037-1045 Link Here
1037
		// check the presence of the unspecified Varargs attribute
1041
		// check the presence of the unspecified Varargs attribute
1038
		return Util.getAttribute(methodInfo, AttributeNamesConstants.VarargsName) != null;
1042
		return Util.getAttribute(methodInfo, AttributeNamesConstants.VarargsName) != null;
1039
	}
1043
	}
1040
	private void disassemble(ICodeAttribute codeAttribute, StringBuffer buffer, String lineSeparator, int tabNumber, int mode) {
1044
	private void disassemble(ICodeAttribute codeAttribute, char[][] parameterNames, char[] methodDescriptor, boolean isStatic, StringBuffer buffer, String lineSeparator, int tabNumber, int mode) {
1041
		writeNewLine(buffer, lineSeparator, tabNumber - 1);
1045
		writeNewLine(buffer, lineSeparator, tabNumber - 1);
1042
		DefaultBytecodeVisitor visitor = new DefaultBytecodeVisitor(codeAttribute, buffer, lineSeparator, tabNumber, mode);
1046
		DefaultBytecodeVisitor visitor = new DefaultBytecodeVisitor(codeAttribute, parameterNames, methodDescriptor, isStatic, buffer, lineSeparator, tabNumber, mode);
1043
		try {
1047
		try {
1044
			codeAttribute.traverse(visitor);
1048
			codeAttribute.traverse(visitor);
1045
		} catch(ClassFormatException e) {
1049
		} catch(ClassFormatException e) {
(-)model/org/eclipse/jdt/internal/core/util/DefaultBytecodeVisitor.java (-33 / +81 lines)
Lines 41-57 Link Here
41
	private String lineSeparator;
41
	private String lineSeparator;
42
	private int tabNumber;
42
	private int tabNumber;
43
	private int digitNumberForPC;
43
	private int digitNumberForPC;
44
    private ILocalVariableTableEntry[] localVariableTableEntries;
44
	private ILocalVariableTableEntry[] localVariableTableEntries;
45
    private int localVariableAttributeLength;
45
	private int localVariableAttributeLength;
46
	private int mode;
46
	private int mode;
47
	private char[][] parameterNames;
48
	private boolean isStatic;
49
	private int[] argumentSizes;
47
50
48
	public DefaultBytecodeVisitor(ICodeAttribute codeAttribute, StringBuffer buffer, String lineSeparator, int tabNumber, int mode) {
51
	public DefaultBytecodeVisitor(ICodeAttribute codeAttribute, char[][] parameterNames, char[] methodDescriptor, boolean isStatic, StringBuffer buffer, String lineSeparator, int tabNumber, int mode) {
49
		ILocalVariableAttribute localVariableAttribute = codeAttribute.getLocalVariableAttribute();
52
		ILocalVariableAttribute localVariableAttribute = codeAttribute.getLocalVariableAttribute();
50
		this.localVariableAttributeLength = localVariableAttribute == null ? 0 : localVariableAttribute.getLocalVariableTableLength();
53
		this.localVariableAttributeLength = localVariableAttribute == null ? 0 : localVariableAttribute.getLocalVariableTableLength();
51
		if (this.localVariableAttributeLength != 0) {
54
		if (this.localVariableAttributeLength != 0) {
52
			this.localVariableTableEntries = localVariableAttribute.getLocalVariableTable();
55
			this.localVariableTableEntries = localVariableAttribute.getLocalVariableTable();
53
		} else {
56
		} else {
54
            this.localVariableTableEntries = null;
57
			this.localVariableTableEntries = null;
55
		}
58
		}
56
		this.buffer = buffer;
59
		this.buffer = buffer;
57
		this.lineSeparator = lineSeparator;
60
		this.lineSeparator = lineSeparator;
Lines 59-64 Link Here
59
		long codeLength = codeAttribute.getCodeLength();
62
		long codeLength = codeAttribute.getCodeLength();
60
		this.digitNumberForPC = Long.toString(codeLength).length();
63
		this.digitNumberForPC = Long.toString(codeLength).length();
61
		this.mode = mode;
64
		this.mode = mode;
65
		this.parameterNames = parameterNames;
66
		this.isStatic = isStatic;
67
		// compute argument sizes
68
		if (parameterNames != null) {
69
			char[][] parameterTypes = Signature.getParameterTypes(methodDescriptor);
70
			int length = parameterTypes.length;
71
			this.argumentSizes = new int[length];
72
			for (int i = 0; i < length; i++) {
73
				char[] parameterType = parameterTypes[i];
74
				this.argumentSizes[i] = parameterType.length == 1 && (parameterType[0] == 'D' || parameterType[0] == 'J') ? 2 : 1;
75
			}
76
		}
62
	}
77
	}
63
	/**
78
	/**
64
	 * @see IBytecodeVisitor#_aaload(int)
79
	 * @see IBytecodeVisitor#_aaload(int)
Lines 220-254 Link Here
220
	}
235
	}
221
236
222
	private String getLocalVariableName(int pc, int index, boolean showIndex) {
237
	private String getLocalVariableName(int pc, int index, boolean showIndex) {
223
        int nextPC = pc + 1;
238
		int nextPC = pc + 1;
224
        switch(index) {
239
		switch(index) {
225
            case 0 :
240
			case 0 :
226
            case 1 :
241
			case 1 :
227
            case 2 :
242
			case 2 :
228
            case 3 :
243
			case 3 :
229
                break;
244
				break;
230
            default :
245
			default :
231
                nextPC = index <= 255 ? pc + 2 : pc + 3;
246
				nextPC = index <= 255 ? pc + 2 : pc + 3;
232
        }
247
		}
233
248
234
        for (int i = 0, max = this.localVariableAttributeLength; i < max; i++) {
249
		for (int i = 0, max = this.localVariableAttributeLength; i < max; i++) {
235
            final ILocalVariableTableEntry entry = this.localVariableTableEntries[i];
250
			final ILocalVariableTableEntry entry = this.localVariableTableEntries[i];
236
            final int startPC = entry.getStartPC();
251
			final int startPC = entry.getStartPC();
237
            if (entry.getIndex() == index && (startPC <= nextPC) && ((startPC + entry.getLength()) > nextPC)) {
252
			if (entry.getIndex() == index && (startPC <= nextPC) && ((startPC + entry.getLength()) > nextPC)) {
238
            	final StringBuffer stringBuffer = new StringBuffer();
253
				final StringBuffer stringBuffer = new StringBuffer();
239
            	if (showIndex) {
254
				if (showIndex) {
240
            		stringBuffer.append(' ').append(index);
255
					stringBuffer.append(' ').append(index);
241
            	}
256
				}
242
            	stringBuffer.append(' ').append('[').append(entry.getName()).append(']');
257
				stringBuffer.append(' ').append('[').append(entry.getName()).append(']');
243
            	return String.valueOf(stringBuffer);
258
				return String.valueOf(stringBuffer);
244
            }
259
			}
245
        }
260
		}
246
    	if (showIndex) {
261
		if (this.parameterNames != null) {
247
        	final StringBuffer stringBuffer = new StringBuffer();
262
			if (index == 0) {
248
        	stringBuffer.append(' ').append(index);
263
				if (!this.isStatic) {
249
         	return String.valueOf(stringBuffer);
264
					final StringBuffer stringBuffer = new StringBuffer();
250
    	}
265
					stringBuffer.append(' ').append('[').append("this").append(']'); //$NON-NLS-1$
251
        return EMPTY_LOCAL_NAME;
266
					return String.valueOf(stringBuffer);
267
				}
268
			}
269
			int indexInParameterNames = index;
270
			if (index != 0) {
271
				int resolvedPosition = 0;
272
				if (!this.isStatic) {
273
					resolvedPosition = 1;
274
				}
275
				int i = 0;
276
				loop: for (int max = this.argumentSizes.length; i < max; i++) {
277
					if (index == resolvedPosition) {
278
						break loop;
279
					}
280
					resolvedPosition += this.argumentSizes[i];
281
				}
282
				indexInParameterNames = i;
283
			}
284
			if (indexInParameterNames < this.parameterNames.length
285
					&& this.parameterNames[indexInParameterNames] != null) {
286
				final StringBuffer stringBuffer = new StringBuffer();
287
				if (showIndex) {
288
					stringBuffer.append(' ').append(index);
289
				}
290
				stringBuffer.append(' ').append('[').append(this.parameterNames[indexInParameterNames]).append(']');
291
				return String.valueOf(stringBuffer);
292
			}
293
		}
294
		if (showIndex) {
295
			final StringBuffer stringBuffer = new StringBuffer();
296
			stringBuffer.append(' ').append(index);
297
			return String.valueOf(stringBuffer);
298
		}
299
		return EMPTY_LOCAL_NAME;
252
	}
300
	}
253
301
254
	/**
302
	/**
(-)src/org/eclipse/jdt/core/tests/compiler/regression/MethodVerifyTest.java (-2 / +2 lines)
Lines 5656-5662 Link Here
5656
			"  // Method descriptor #17 ()Ljava/lang/Object;\n" +
5656
			"  // Method descriptor #17 ()Ljava/lang/Object;\n" +
5657
			"  // Stack: 1, Locals: 1\n" +
5657
			"  // Stack: 1, Locals: 1\n" +
5658
			"  public bridge synthetic java.lang.Object bar() throws java.lang.Exception;\n" +
5658
			"  public bridge synthetic java.lang.Object bar() throws java.lang.Exception;\n" +
5659
			"    0  aload_0\n" +
5659
			"    0  aload_0 [this]\n" +
5660
			"    1  invokevirtual X.bar() : java.lang.String [21]\n" +
5660
			"    1  invokevirtual X.bar() : java.lang.String [21]\n" +
5661
			"    4  areturn\n" +
5661
			"    4  areturn\n" +
5662
			"      Line numbers:\n" +
5662
			"      Line numbers:\n" +
Lines 5665-5671 Link Here
5665
			"  // Method descriptor #17 ()Ljava/lang/Object;\n" +
5665
			"  // Method descriptor #17 ()Ljava/lang/Object;\n" +
5666
			"  // Stack: 1, Locals: 1\n" +
5666
			"  // Stack: 1, Locals: 1\n" +
5667
			"  protected bridge synthetic java.lang.Object foo() throws java.lang.Exception;\n" +
5667
			"  protected bridge synthetic java.lang.Object foo() throws java.lang.Exception;\n" +
5668
			"    0  aload_0\n" +
5668
			"    0  aload_0 [this]\n" +
5669
			"    1  invokevirtual X.foo() : java.lang.String [23]\n" +
5669
			"    1  invokevirtual X.foo() : java.lang.String [23]\n" +
5670
			"    4  areturn\n" +
5670
			"    4  areturn\n" +
5671
			"      Line numbers:\n" +
5671
			"      Line numbers:\n" +
(-)src/org/eclipse/jdt/core/tests/compiler/regression/InnerEmulationTest.java (-9 / +9 lines)
Lines 4862-4871 Link Here
4862
			"     0  aload_0 [this]\n" +
4862
			"     0  aload_0 [this]\n" +
4863
			"     1  invokespecial java.lang.Object() [13]\n" +
4863
			"     1  invokespecial java.lang.Object() [13]\n" +
4864
			"     4  aload_0 [this]\n" +
4864
			"     4  aload_0 [this]\n" +
4865
			"     5  aload_1\n" +
4865
			"     5  aload_1 [arg0]\n" +
4866
			"     6  putfield X$1$Local.this$0 : X [16]\n" +
4866
			"     6  putfield X$1$Local.this$0 : X [16]\n" +
4867
			"     9  aload_0 [this]\n" +
4867
			"     9  aload_0 [this]\n" +
4868
			"    10  aload_2\n" +
4868
			"    10  aload_2 [arg1]\n" +
4869
			"    11  putfield X$1$Local.val$s : java.lang.String [18]\n" +
4869
			"    11  putfield X$1$Local.val$s : java.lang.String [18]\n" +
4870
			"    14  return\n" +
4870
			"    14  return\n" +
4871
			"      Line numbers:\n" +
4871
			"      Line numbers:\n" +
Lines 4890-4898 Link Here
4890
			"  // Method descriptor #37 (LX;Ljava/lang/String;LX$1$Local;)V\n" +
4890
			"  // Method descriptor #37 (LX;Ljava/lang/String;LX$1$Local;)V\n" +
4891
			"  // Stack: 3, Locals: 4\n" +
4891
			"  // Stack: 3, Locals: 4\n" +
4892
			"  synthetic X$1$Local(X arg0, java.lang.String arg1, new X(){}.Local arg2);\n" +
4892
			"  synthetic X$1$Local(X arg0, java.lang.String arg1, new X(){}.Local arg2);\n" +
4893
			"    0  aload_0\n" +
4893
			"    0  aload_0 [this]\n" +
4894
			"    1  aload_1\n" +
4894
			"    1  aload_1 [arg0]\n" +
4895
			"    2  aload_2\n" +
4895
			"    2  aload_2 [arg1]\n" +
4896
			"    3  invokespecial X$1$Local(X, java.lang.String) [38]\n" +
4896
			"    3  invokespecial X$1$Local(X, java.lang.String) [38]\n" +
4897
			"    6  return\n" +
4897
			"    6  return\n" +
4898
			"      Line numbers:\n" +
4898
			"      Line numbers:\n" +
Lines 4915-4924 Link Here
4915
			"  // Stack: 2, Locals: 3\n" +
4915
			"  // Stack: 2, Locals: 3\n" +
4916
			"  X$1$Local(X arg0, java.lang.String arg1);\n" +
4916
			"  X$1$Local(X arg0, java.lang.String arg1);\n" +
4917
			"     0  aload_0 [this]\n" +
4917
			"     0  aload_0 [this]\n" +
4918
			"     1  aload_1\n" +
4918
			"     1  aload_1 [arg0]\n" +
4919
			"     2  putfield X$1$Local.this$0 : X [13]\n" +
4919
			"     2  putfield X$1$Local.this$0 : X [13]\n" +
4920
			"     5  aload_0 [this]\n" +
4920
			"     5  aload_0 [this]\n" +
4921
			"     6  aload_2\n" +
4921
			"     6  aload_2 [arg1]\n" +
4922
			"     7  putfield X$1$Local.val$s : java.lang.String [15]\n" +
4922
			"     7  putfield X$1$Local.val$s : java.lang.String [15]\n" +
4923
			"    10  aload_0 [this]\n" +
4923
			"    10  aload_0 [this]\n" +
4924
			"    11  invokespecial java.lang.Object() [17]\n" +
4924
			"    11  invokespecial java.lang.Object() [17]\n" +
Lines 4958-4967 Link Here
4958
				"  // Stack: 2, Locals: 3\n" +
4958
				"  // Stack: 2, Locals: 3\n" +
4959
				"  X$1Local(X arg0, java.lang.String arg1);\n" +
4959
				"  X$1Local(X arg0, java.lang.String arg1);\n" +
4960
				"     0  aload_0 [this]\n" +
4960
				"     0  aload_0 [this]\n" +
4961
				"     1  aload_1\n" +
4961
				"     1  aload_1 [arg0]\n" +
4962
				"     2  putfield X$1Local.this$0 : X [12]\n" +
4962
				"     2  putfield X$1Local.this$0 : X [12]\n" +
4963
				"     5  aload_0 [this]\n" +
4963
				"     5  aload_0 [this]\n" +
4964
				"     6  aload_2\n" +
4964
				"     6  aload_2 [arg1]\n" +
4965
				"     7  putfield X$1Local.val$s : java.lang.String [14]\n" +
4965
				"     7  putfield X$1Local.val$s : java.lang.String [14]\n" +
4966
				"    10  aload_0 [this]\n" +
4966
				"    10  aload_0 [this]\n" +
4967
				"    11  invokespecial java.lang.Object() [16]\n" +
4967
				"    11  invokespecial java.lang.Object() [16]\n" +
(-)src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java (-2 / +43 lines)
Lines 43-49 Link Here
43
43
44
	static {
44
	static {
45
//	TESTS_NAMES = new String[] { "test000" };
45
//	TESTS_NAMES = new String[] { "test000" };
46
//	TESTS_NUMBERS = new int[] { 152 };
46
	TESTS_NUMBERS = new int[] { 288 };
47
//	TESTS_RANGE = new int[] { 107, -1 };
47
//	TESTS_RANGE = new int[] { 107, -1 };
48
	}
48
	}
49
public BatchCompilerTest(String name) {
49
public BatchCompilerTest(String name) {
Lines 10941-10947 Link Here
10941
        "1 problem (1 error)",
10941
        "1 problem (1 error)",
10942
        true /*shouldFlushOutput*/);
10942
        true /*shouldFlushOutput*/);
10943
}
10943
}
10944
10945
// command-line expansion
10944
// command-line expansion
10946
// shows that we don't recurse
10945
// shows that we don't recurse
10947
public void test287_option_files() {
10946
public void test287_option_files() {
Lines 10961-10964 Link Here
10961
        "Unrecognized option : @options2.txt\n" /* stderr */,
10960
        "Unrecognized option : @options2.txt\n" /* stderr */,
10962
        true /*shouldFlushOutput*/);
10961
        true /*shouldFlushOutput*/);
10963
}
10962
}
10963
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=229092
10964
public void test288(){
10965
	String setting= System.getProperty("jdt.compiler.useSingleThread");
10966
	try {
10967
//		System.setProperty("jdt.compiler.useSingleThread", "false");
10968
		this.runNegativeTest(
10969
			new String[] {
10970
					"C1.java",
10971
					"public class C1 {\r\n" + 
10972
					"  void bar(C2 other) {\r\n" + 
10973
					"    other.missing();\r\n" + 
10974
					"  }\r\n" + 
10975
					"}",
10976
					"C2.java",
10977
					"public class C2 {\r\n" + 
10978
					"  void foo() {\r\n" + 
10979
					"    this.wrong();\r\n" + 
10980
					"  }\r\n" + 
10981
					"}",
10982
			},
10983
			"\"" + OUTPUT_DIR +  File.separator + "C1.java\""
10984
			+ " -classpath \"" + OUTPUT_DIR + "\""
10985
			+ " -g -d \"" + OUTPUT_DIR + "\"",
10986
			"",
10987
			"----------\n" + 
10988
			"1. ERROR in ---OUTPUT_DIR_PLACEHOLDER---/C1.java (at line 3)\n" + 
10989
			"	other.missing();\n" + 
10990
			"	      ^^^^^^^\n" + 
10991
			"The method missing() is undefined for the type C2\n" + 
10992
			"----------\n" + 
10993
			"----------\n" + 
10994
			"2. ERROR in ---OUTPUT_DIR_PLACEHOLDER---/C2.java (at line 3)\n" + 
10995
			"	this.wrong();\n" + 
10996
			"	     ^^^^^\n" + 
10997
			"The method wrong() is undefined for the type C2\n" + 
10998
			"----------\n" + 
10999
			"2 problems (2 errors)",
11000
			true);
11001
	} finally {
11002
		System.setProperty("jdt.compiler.useSingleThread", setting == null ? "false" : setting);
11003
	}
11004
}
10964
}
11005
}
(-)src/org/eclipse/jdt/core/tests/compiler/regression/GenericTypeTest.java (-4 / +4 lines)
Lines 24073-24079 Link Here
24073
			"  // Method descriptor #18 ()Ljava/lang/Object;\n" +
24073
			"  // Method descriptor #18 ()Ljava/lang/Object;\n" +
24074
			"  // Stack: 1, Locals: 1\n" +
24074
			"  // Stack: 1, Locals: 1\n" +
24075
			"  public bridge synthetic java.lang.Object getIt();\n" +
24075
			"  public bridge synthetic java.lang.Object getIt();\n" +
24076
			"    0  aload_0\n" +
24076
			"    0  aload_0 [this]\n" +
24077
			"    1  invokevirtual FooImpl.getIt() : java.lang.String [19]\n" +
24077
			"    1  invokevirtual FooImpl.getIt() : java.lang.String [19]\n" +
24078
			"    4  areturn\n" +
24078
			"    4  areturn\n" +
24079
			"      Line numbers:\n" +
24079
			"      Line numbers:\n" +
Lines 24129-24135 Link Here
24129
			"  // Method descriptor #18 ()Ljava/lang/Exception;\n" +
24129
			"  // Method descriptor #18 ()Ljava/lang/Exception;\n" +
24130
			"  // Stack: 1, Locals: 1\n" +
24130
			"  // Stack: 1, Locals: 1\n" +
24131
			"  public bridge synthetic java.lang.Exception getIt() throws java.lang.Exception;\n" +
24131
			"  public bridge synthetic java.lang.Exception getIt() throws java.lang.Exception;\n" +
24132
			"    0  aload_0\n" +
24132
			"    0  aload_0 [this]\n" +
24133
			"    1  invokevirtual FooImpl.getIt() : java.lang.NullPointerException [22]\n" +
24133
			"    1  invokevirtual FooImpl.getIt() : java.lang.NullPointerException [22]\n" +
24134
			"    4  areturn\n" +
24134
			"    4  areturn\n" +
24135
			"      Line numbers:\n" +
24135
			"      Line numbers:\n" +
Lines 24413-24420 Link Here
24413
		"  // Method descriptor #31 (I)Ljava/lang/Object;\n" +
24413
		"  // Method descriptor #31 (I)Ljava/lang/Object;\n" +
24414
		"  // Stack: 2, Locals: 2\n" +
24414
		"  // Stack: 2, Locals: 2\n" +
24415
		"  public bridge synthetic java.lang.Object get(int arg0);\n" +
24415
		"  public bridge synthetic java.lang.Object get(int arg0);\n" +
24416
		"    0  aload_0\n" +
24416
		"    0  aload_0 [this]\n" +
24417
		"    1  iload_1\n" +
24417
		"    1  iload_1 [arg0]\n" +
24418
		"    2  invokevirtual X$Entry$1.get(int) : java.lang.String [36]\n" +
24418
		"    2  invokevirtual X$Entry$1.get(int) : java.lang.String [36]\n" +
24419
		"    5  areturn\n" +
24419
		"    5  areturn\n" +
24420
		"      Line numbers:\n" +
24420
		"      Line numbers:\n" +
(-)src/org/eclipse/jdt/core/tests/compiler/regression/EnumTest.java (-8 / +8 lines)
Lines 2023-2030 Link Here
2023
		"  // Stack: 3, Locals: 3\n" +
2023
		"  // Stack: 3, Locals: 3\n" +
2024
		"  private X(java.lang.String arg0, int arg1);\n" +
2024
		"  private X(java.lang.String arg0, int arg1);\n" +
2025
		"    0  aload_0 [this]\n" +
2025
		"    0  aload_0 [this]\n" +
2026
		"    1  aload_1\n" +
2026
		"    1  aload_1 [arg0]\n" +
2027
		"    2  iload_2\n" +
2027
		"    2  iload_2 [arg1]\n" +
2028
		"    3  invokespecial java.lang.Enum(java.lang.String, int) [25]\n" +
2028
		"    3  invokespecial java.lang.Enum(java.lang.String, int) [25]\n" +
2029
		"    6  return\n";
2029
		"    6  return\n";
2030
2030
Lines 2888-2895 Link Here
2888
		"  // Stack: 3, Locals: 3\n" +
2888
		"  // Stack: 3, Locals: 3\n" +
2889
		"  private X(java.lang.String arg0, int arg1);\n" +
2889
		"  private X(java.lang.String arg0, int arg1);\n" +
2890
		"    0  aload_0 [this]\n" +
2890
		"    0  aload_0 [this]\n" +
2891
		"    1  aload_1\n" +
2891
		"    1  aload_1 [arg0]\n" +
2892
		"    2  iload_2\n" +
2892
		"    2  iload_2 [arg1]\n" +
2893
		"    3  invokespecial java.lang.Enum(java.lang.String, int) [16]\n" +
2893
		"    3  invokespecial java.lang.Enum(java.lang.String, int) [16]\n" +
2894
		"    6  return\n" +
2894
		"    6  return\n" +
2895
		"      Line numbers:\n" +
2895
		"      Line numbers:\n" +
Lines 2923-2929 Link Here
2923
		"  // Stack: 2, Locals: 1\n" +
2923
		"  // Stack: 2, Locals: 1\n" +
2924
		"  public static X valueOf(java.lang.String arg0);\n" +
2924
		"  public static X valueOf(java.lang.String arg0);\n" +
2925
		"     0  ldc <Class X> [1]\n" +
2925
		"     0  ldc <Class X> [1]\n" +
2926
		"     2  aload_0\n" +
2926
		"     2  aload_0 [arg0]\n" +
2927
		"     3  invokestatic java.lang.Enum.valueOf(java.lang.Class, java.lang.String) : java.lang.Enum [30]\n" +
2927
		"     3  invokestatic java.lang.Enum.valueOf(java.lang.Class, java.lang.String) : java.lang.Enum [30]\n" +
2928
		"     6  checkcast X [1]\n" +
2928
		"     6  checkcast X [1]\n" +
2929
		"     9  areturn\n" +
2929
		"     9  areturn\n" +
Lines 4394-4401 Link Here
4394
		"  // Stack: 3, Locals: 3\n" +
4394
		"  // Stack: 3, Locals: 3\n" +
4395
		"  private X(java.lang.String arg0, int arg1);\n" +
4395
		"  private X(java.lang.String arg0, int arg1);\n" +
4396
		"    0  aload_0 [this]\n" +
4396
		"    0  aload_0 [this]\n" +
4397
		"    1  aload_1\n" +
4397
		"    1  aload_1 [arg0]\n" +
4398
		"    2  iload_2\n" +
4398
		"    2  iload_2 [arg1]\n" +
4399
		"    3  invokespecial java.lang.Enum(java.lang.String, int) [31]\n" +
4399
		"    3  invokespecial java.lang.Enum(java.lang.String, int) [31]\n" +
4400
		"    6  return\n" +
4400
		"    6  return\n" +
4401
		"      Line numbers:\n" +
4401
		"      Line numbers:\n" +
Lines 4429-4435 Link Here
4429
		"  // Stack: 2, Locals: 1\n" +
4429
		"  // Stack: 2, Locals: 1\n" +
4430
		"  public static X valueOf(java.lang.String arg0);\n" +
4430
		"  public static X valueOf(java.lang.String arg0);\n" +
4431
		"     0  ldc <Class X> [1]\n" +
4431
		"     0  ldc <Class X> [1]\n" +
4432
		"     2  aload_0\n" +
4432
		"     2  aload_0 [arg0]\n" +
4433
		"     3  invokestatic java.lang.Enum.valueOf(java.lang.Class, java.lang.String) : java.lang.Enum [43]\n" +
4433
		"     3  invokestatic java.lang.Enum.valueOf(java.lang.Class, java.lang.String) : java.lang.Enum [43]\n" +
4434
		"     6  checkcast X [1]\n" +
4434
		"     6  checkcast X [1]\n" +
4435
		"     9  areturn\n" +
4435
		"     9  areturn\n" +

Return to bug 240349