Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 188887 Details for
Bug 335751
[1.7][compiler] Cycle inheritance in type arguments is not detected
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Patch under test
patch.txt (text/plain), 7.17 KB, created by
Srikanth Sankaran
on 2011-02-14 05:13:36 EST
(
hide
)
Description:
Patch under test
Filename:
MIME Type:
Creator:
Srikanth Sankaran
Created:
2011-02-14 05:13:36 EST
Size:
7.17 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java,v >retrieving revision 1.380 >diff -u -r1.380 Scope.java >--- compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java 3 Dec 2010 08:44:28 -0000 1.380 >+++ compiler/org/eclipse/jdt/internal/compiler/lookup/Scope.java 14 Feb 2011 10:12:10 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2000, 2010 IBM Corporation and others. >+ * Copyright (c) 2000, 2011 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -615,6 +615,24 @@ > break firstBound; // do not keep first bound > } > } >+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=335751 >+ if (compilerOptions().complianceLevel > ClassFileConstants.JDK1_6) { >+ if (typeVariable.rank >= varSuperType.rank && varSuperType.declaringElement == typeVariable.declaringElement) { >+ SimpleSet set = new SimpleSet(typeParameters.length); >+ set.add(typeVariable); >+ ReferenceBinding superBinding = varSuperType; >+ while (superBinding instanceof TypeVariableBinding) { >+ if (set.includes(superBinding)) { >+ problemReporter().hierarchyCircularity(typeVariable, varSuperType, typeRef); >+ typeVariable.tagBits |= TagBits.HierarchyHasProblems; >+ break firstBound; // do not keep first bound >+ } else { >+ set.add(superBinding); >+ superBinding = ((TypeVariableBinding)superBinding).superclass; >+ } >+ } >+ } >+ } > break; > default : > if (((ReferenceBinding) superType).isFinal()) { >Index: compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java,v >retrieving revision 1.430 >diff -u -r1.430 ProblemReporter.java >--- compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java 16 Jan 2011 22:43:21 -0000 1.430 >+++ compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java 14 Feb 2011 10:12:24 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2000, 2010 IBM Corporation and others. >+ * Copyright (c) 2000, 2011 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -2085,6 +2085,29 @@ > end); > } > >+public void hierarchyCircularity(TypeVariableBinding type, ReferenceBinding superType, TypeReference reference) { >+ int start = 0; >+ int end = 0; >+ >+ start = reference.sourceStart; >+ end = reference.sourceEnd; >+ >+ if (type == superType) >+ this.handle( >+ IProblem.HierarchyCircularitySelfReference, >+ new String[] {new String(type.readableName()) }, >+ new String[] {new String(type.shortReadableName()) }, >+ start, >+ end); >+ else >+ this.handle( >+ IProblem.HierarchyCircularity, >+ new String[] {new String(type.readableName()), new String(superType.readableName())}, >+ new String[] {new String(type.shortReadableName()), new String(superType.shortReadableName())}, >+ start, >+ end); >+} >+ > public void hierarchyHasProblems(SourceTypeBinding type) { > String[] arguments = new String[] {new String(type.sourceName())}; > this.handle( >#P org.eclipse.jdt.core.tests.compiler >Index: src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.compiler/src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java,v >retrieving revision 1.6 >diff -u -r1.6 GenericsRegressionTest.java >--- src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java 14 Feb 2011 05:01:03 -0000 1.6 >+++ src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java 14 Feb 2011 10:12:28 -0000 >@@ -1,5 +1,5 @@ > /******************************************************************************* >- * Copyright (c) 2000, 2010 IBM Corporation and others. >+ * Copyright (c) 2000, 2011 IBM Corporation and others. > * All rights reserved. This program and the accompanying materials > * are made available under the terms of the Eclipse Public License v1.0 > * which accompanies this distribution, and is available at >@@ -27,7 +27,7 @@ > // Static initializer to specify tests subset using TESTS_* static variables > // All specified tests which does not belong to the class are skipped... > static { >-// TESTS_NAMES = new String[] { "test322531j" }; >+// TESTS_NAMES = new String[] { "test335751" }; > // TESTS_NAMES = new String[] { "test1464" }; > // TESTS_NUMBERS = new int[] { 1465 }; > // TESTS_RANGE = new int[] { 1097, -1 }; >@@ -1304,4 +1304,50 @@ > "Zork cannot be resolved to a type\n" + > "----------\n"); > } >+// https://bugs.eclipse.org/bugs/show_bug.cgi?id=335751 ([1.7][compiler] Cycle inheritance in type arguments is not detected) >+public void test335751() { >+ this.runNegativeTest( >+ new String[] { >+ "X.java", >+ "public class X<A extends B, B extends A> {}\n" >+ }, >+ this.complianceLevel <= ClassFileConstants.JDK1_6 ? >+ "----------\n" + >+ "1. ERROR in X.java (at line 1)\n" + >+ " public class X<A extends B, B extends A> {}\n" + >+ " ^\n" + >+ "Illegal forward reference to type parameter B\n" + >+ "----------\n" : >+ >+ // 1.7+ output. >+ "----------\n" + >+ "1. ERROR in X.java (at line 1)\n" + >+ " public class X<A extends B, B extends A> {}\n" + >+ " ^\n" + >+ "Cycle detected: a cycle exists in the type hierarchy between B and A\n" + >+ "----------\n"); >+} >+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=334121 ([1.7][compiler] Stackoverflow error if compiled in 1.7 compliance mode) >+public void test334121() { >+ this.runNegativeTest( >+ new String[] { >+ "X.java", >+ "public class X<A extends A> {}\n" >+ }, >+ this.complianceLevel <= ClassFileConstants.JDK1_6 ? >+ "----------\n" + >+ "1. ERROR in X.java (at line 1)\n" + >+ " public class X<A extends A> {}\n" + >+ " ^\n" + >+ "Illegal forward reference to type parameter A\n" + >+ "----------\n" : >+ >+ // 1.7+ output. >+ "----------\n" + >+ "1. ERROR in X.java (at line 1)\n" + >+ " public class X<A extends A> {}\n" + >+ " ^\n" + >+ "Cycle detected: the type A cannot extend/implement itself or one of its own member types\n" + >+ "----------\n"); >+} > } >\ No newline at end of file
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 335751
: 188887