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

(-)src/org/eclipse/jdt/core/tests/model/ReconcilerTests.java (+36 lines)
Lines 927-932 Link Here
927
		deleteFile("/Reconciler/src/p1/OS.java");
927
		deleteFile("/Reconciler/src/p1/OS.java");
928
	}
928
	}
929
}
929
}
930
/*
931
 * Ensures that the source type converter doesn't throw an OutOfMemoryError if converting a generic type with a primitive type array as argument
932
 * (regression test for bug 135296 opening a special java file results in an "out of memory" message)
933
 */
934
public void testConvertPrimitiveTypeArrayTypeArgument() throws CoreException {
935
	ICompilationUnit otherCopy = null;
936
	try {
937
		WorkingCopyOwner owner = new WorkingCopyOwner() {};
938
		otherCopy = getWorkingCopy(
939
			"Reconciler15/src/Y.java", 
940
			"public class Y {\n" +
941
			"  void foo(Z<int[]> z) {}\n" +
942
			"}\n" +
943
			"class Z<E> {\n" +
944
			"}",
945
			owner,
946
			false/*don't compute problems*/);
947
		setUp15WorkingCopy("/Reconciler15/src/X.java", owner);
948
		setWorkingCopyContents(
949
			"public class X {\n" +
950
			"  void bar(Y y) {\n" +
951
			"    y.foo(new Z<int[]>());\n" +
952
			"  }\n" +
953
			"}"
954
		);
955
		this.workingCopy.reconcile(ICompilationUnit.NO_AST, false, owner, null);
956
		assertProblems(
957
			"Unexpected problems",
958
			"----------\n" + 
959
			"----------\n"
960
		);
961
	} finally {
962
		if (otherCopy != null)
963
			otherCopy.discardWorkingCopy();
964
	}
965
}
930
/**
966
/**
931
 * Ensures that the reconciler reconciles the new contents with the current
967
 * Ensures that the reconciler reconciles the new contents with the current
932
 * contents, updating the structure of this reconciler's compilation
968
 * contents, updating the structure of this reconciler's compilation
(-)model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java (+9 lines)
Lines 672-677 Link Here
672
			switch (currentChar) {
672
			switch (currentChar) {
673
				case Signature.C_BOOLEAN :
673
				case Signature.C_BOOLEAN :
674
					if (!nameStarted) {
674
					if (!nameStarted) {
675
						this.namePos++;
675
						if (dim == 0)
676
						if (dim == 0)
676
							return new SingleTypeReference(TypeBinding.BOOLEAN.simpleName, ((long) start << 32) + end);
677
							return new SingleTypeReference(TypeBinding.BOOLEAN.simpleName, ((long) start << 32) + end);
677
						else
678
						else
Lines 680-685 Link Here
680
					break;
681
					break;
681
				case Signature.C_BYTE :
682
				case Signature.C_BYTE :
682
					if (!nameStarted) {
683
					if (!nameStarted) {
684
						this.namePos++;
683
						if (dim == 0)
685
						if (dim == 0)
684
							return new SingleTypeReference(TypeBinding.BYTE.simpleName, ((long) start << 32) + end);
686
							return new SingleTypeReference(TypeBinding.BYTE.simpleName, ((long) start << 32) + end);
685
						else
687
						else
Lines 688-693 Link Here
688
					break;
690
					break;
689
				case Signature.C_CHAR :
691
				case Signature.C_CHAR :
690
					if (!nameStarted) {
692
					if (!nameStarted) {
693
						this.namePos++;
691
						if (dim == 0)
694
						if (dim == 0)
692
							return new SingleTypeReference(TypeBinding.CHAR.simpleName, ((long) start << 32) + end);
695
							return new SingleTypeReference(TypeBinding.CHAR.simpleName, ((long) start << 32) + end);
693
						else
696
						else
Lines 696-701 Link Here
696
					break;
699
					break;
697
				case Signature.C_DOUBLE :
700
				case Signature.C_DOUBLE :
698
					if (!nameStarted) {
701
					if (!nameStarted) {
702
						this.namePos++;
699
						if (dim == 0)
703
						if (dim == 0)
700
							return new SingleTypeReference(TypeBinding.DOUBLE.simpleName, ((long) start << 32) + end);
704
							return new SingleTypeReference(TypeBinding.DOUBLE.simpleName, ((long) start << 32) + end);
701
						else
705
						else
Lines 704-709 Link Here
704
					break;
708
					break;
705
				case Signature.C_FLOAT :
709
				case Signature.C_FLOAT :
706
					if (!nameStarted) {
710
					if (!nameStarted) {
711
						this.namePos++;
707
						if (dim == 0)
712
						if (dim == 0)
708
							return new SingleTypeReference(TypeBinding.FLOAT.simpleName, ((long) start << 32) + end);
713
							return new SingleTypeReference(TypeBinding.FLOAT.simpleName, ((long) start << 32) + end);
709
						else
714
						else
Lines 712-717 Link Here
712
					break;
717
					break;
713
				case Signature.C_INT :
718
				case Signature.C_INT :
714
					if (!nameStarted) {
719
					if (!nameStarted) {
720
						this.namePos++;
715
						if (dim == 0)
721
						if (dim == 0)
716
							return new SingleTypeReference(TypeBinding.INT.simpleName, ((long) start << 32) + end);
722
							return new SingleTypeReference(TypeBinding.INT.simpleName, ((long) start << 32) + end);
717
						else
723
						else
Lines 720-725 Link Here
720
					break;
726
					break;
721
				case Signature.C_LONG :
727
				case Signature.C_LONG :
722
					if (!nameStarted) {
728
					if (!nameStarted) {
729
						this.namePos++;
723
						if (dim == 0)
730
						if (dim == 0)
724
							return new SingleTypeReference(TypeBinding.LONG.simpleName, ((long) start << 32) + end);
731
							return new SingleTypeReference(TypeBinding.LONG.simpleName, ((long) start << 32) + end);
725
						else
732
						else
Lines 728-733 Link Here
728
					break;
735
					break;
729
				case Signature.C_SHORT :
736
				case Signature.C_SHORT :
730
					if (!nameStarted) {
737
					if (!nameStarted) {
738
						this.namePos++;
731
						if (dim == 0)
739
						if (dim == 0)
732
							return new SingleTypeReference(TypeBinding.SHORT.simpleName, ((long) start << 32) + end);
740
							return new SingleTypeReference(TypeBinding.SHORT.simpleName, ((long) start << 32) + end);
733
						else
741
						else
Lines 736-741 Link Here
736
					break;
744
					break;
737
				case Signature.C_VOID :
745
				case Signature.C_VOID :
738
					if (!nameStarted) {
746
					if (!nameStarted) {
747
						this.namePos++;
739
						new SingleTypeReference(TypeBinding.VOID.simpleName, ((long) start << 32) + end);
748
						new SingleTypeReference(TypeBinding.VOID.simpleName, ((long) start << 32) + end);
740
					}
749
					}
741
					break;
750
					break;

Return to bug 135296