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

(-)model/org/eclipse/jdt/internal/core/SourceMapper.java (-5 / +9 lines)
Lines 702-724 Link Here
702
			IType currentType = this.types[this.typeDepth];
702
			IType currentType = this.types[this.typeDepth];
703
			int currenTypeModifiers = this.typeModifiers[this.typeDepth];
703
			int currenTypeModifiers = this.typeModifiers[this.typeDepth];
704
			char[][] parameterTypes = methodInfo.parameterTypes;
704
			char[][] parameterTypes = methodInfo.parameterTypes;
705
			if (parameterTypes != null && methodInfo.isConstructor && currentType.getDeclaringType() != null && !Flags.isStatic(currenTypeModifiers)) {
705
			if (methodInfo.isConstructor && currentType.getDeclaringType() != null && !Flags.isStatic(currenTypeModifiers)) {
706
				IType declaringType = currentType.getDeclaringType();
706
				IType declaringType = currentType.getDeclaringType();
707
				String declaringTypeName = declaringType.getElementName();
707
				String declaringTypeName = declaringType.getElementName();
708
				if (declaringTypeName.length() == 0) {
708
				if (declaringTypeName.length() == 0) {
709
					IClassFile classFile = declaringType.getClassFile();
709
					IClassFile classFile = declaringType.getClassFile();
710
					int length = parameterTypes.length;
710
					int length = parameterTypes != null ? parameterTypes.length : 0;
711
					char[][] newParameterTypes = new char[length+1][];
711
					char[][] newParameterTypes = new char[length+1][];
712
					declaringTypeName = classFile.getElementName();
712
					declaringTypeName = classFile.getElementName();
713
					declaringTypeName = declaringTypeName.substring(0, declaringTypeName.indexOf('.'));
713
					declaringTypeName = declaringTypeName.substring(0, declaringTypeName.indexOf('.'));
714
					newParameterTypes[0] = declaringTypeName.toCharArray();
714
					newParameterTypes[0] = declaringTypeName.toCharArray();
715
					System.arraycopy(parameterTypes, 0, newParameterTypes, 1, length);
715
					if (length != 0) {
716
						System.arraycopy(parameterTypes, 0, newParameterTypes, 1, length);
717
					}
716
					this.methodParameterTypes[this.typeDepth] = newParameterTypes;
718
					this.methodParameterTypes[this.typeDepth] = newParameterTypes;
717
				} else {
719
				} else {
718
					int length = parameterTypes.length;
720
					int length = parameterTypes != null ? parameterTypes.length : 0;
719
					char[][] newParameterTypes = new char[length+1][];
721
					char[][] newParameterTypes = new char[length+1][];
720
					newParameterTypes[0] = declaringTypeName.toCharArray();
722
					newParameterTypes[0] = declaringTypeName.toCharArray();
721
					System.arraycopy(parameterTypes, 0, newParameterTypes, 1, length);
723
					if (length != 0) {
724
						System.arraycopy(parameterTypes, 0, newParameterTypes, 1, length);
725
					}
722
					this.methodParameterTypes[this.typeDepth] = newParameterTypes;
726
					this.methodParameterTypes[this.typeDepth] = newParameterTypes;
723
				}
727
				}
724
			} else {
728
			} else {
(-)src/org/eclipse/jdt/core/tests/model/AttachSourceTests.java (+19 lines)
Lines 160-165 Link Here
160
		"    V(String s) {\n" +
160
		"    V(String s) {\n" +
161
		"    }\n" +
161
		"    }\n" +
162
		"  }\n" +
162
		"  }\n" +
163
		"  class Inner {\n" +
164
		"    Inner() {\n" +
165
		"    }\n" +
166
		"  }\n" +
163
		"}"
167
		"}"
164
	};
168
	};
165
	addLibrary("innerClasses.jar", "innerClassessrc.zip", pathAndContents, JavaCore.VERSION_1_4);
169
	addLibrary("innerClasses.jar", "innerClassessrc.zip", pathAndContents, JavaCore.VERSION_1_4);
Lines 672-677 Link Here
672
	IMethod constructor = classFile.getType().getMethod("V", new String[] {"Linner.X;", "Ljava.lang.String;"});
676
	IMethod constructor = classFile.getType().getMethod("V", new String[] {"Linner.X;", "Ljava.lang.String;"});
673
	assertSourceEquals("Unexpected name source", "V", getNameSource(classFile.getSource(), constructor));
677
	assertSourceEquals("Unexpected name source", "V", getNameSource(classFile.getSource(), constructor));
674
}
678
}
679
//https://bugs.eclipse.org/bugs/show_bug.cgi?id=108784
680
public void testGetNameRange04() throws JavaModelException {
681
	IClassFile classFile = this.innerClasses.getClassFile("X$Inner.class");
682
	IMethod[] methods = classFile.getType().getMethods();
683
	for (int i = 0; i < methods.length; i++) {
684
		IMethod iMethod = methods[i];
685
		ISourceRange nameRange = iMethod.getNameRange();
686
		assertTrue("Unexpected name range", nameRange.getOffset() != -1);
687
		assertTrue("Unexpected name range", nameRange.getLength() != 0);
688
	}
689
}
675
/**
690
/**
676
 * Retrieves the source attachment paths for jar root.
691
 * Retrieves the source attachment paths for jar root.
677
 */
692
 */
Lines 732-737 Link Here
732
		"    V(String s) {\n" +
747
		"    V(String s) {\n" +
733
		"    }\n" +
748
		"    }\n" +
734
		"  }\n" +
749
		"  }\n" +
750
		"  class Inner {\n" + 
751
		"    Inner() {\n" + 
752
		"    }\n" + 
753
		"  }\n" + 
735
		"}",
754
		"}",
736
		type.getSource());
755
		type.getSource());
737
}
756
}

Return to bug 108784