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 184023 Details for
Bug 322817
Compiler option to ignore unavoidable type safety problems due to raw APIs
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
A very early version.
patch.txt (text/plain), 5.70 KB, created by
Srikanth Sankaran
on 2010-11-29 05:59:16 EST
(
hide
)
Description:
A very early version.
Filename:
MIME Type:
Creator:
Srikanth Sankaran
Created:
2010-11-29 05:59:16 EST
Size:
5.70 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.jdt.core >Index: compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java,v >retrieving revision 1.120 >diff -u -r1.120 MethodVerifier15.java >--- compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java 6 Nov 2010 12:24:51 -0000 1.120 >+++ compiler/org/eclipse/jdt/internal/compiler/lookup/MethodVerifier15.java 29 Nov 2010 10:51:48 -0000 >@@ -10,8 +10,14 @@ > *******************************************************************************/ > package org.eclipse.jdt.internal.compiler.lookup; > >+ >+import org.eclipse.jdt.internal.compiler.ast.ASTNode; >+import org.eclipse.jdt.internal.compiler.ast.AbstractMethodDeclaration; >+import org.eclipse.jdt.internal.compiler.ast.Argument; > import org.eclipse.jdt.internal.compiler.ast.TypeParameter; > import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants; >+import org.eclipse.jdt.internal.compiler.impl.CompilerOptions; >+import org.eclipse.jdt.internal.compiler.problem.ProblemSeverities; > import org.eclipse.jdt.internal.compiler.util.HashtableOfObject; > import org.eclipse.jdt.internal.compiler.util.SimpleSet; > >@@ -398,6 +404,33 @@ > > return false; > } >+ >+void reportRawReferences() { >+ char[][] methodSelectors = this.currentMethods.keyTable; >+ nextSelector : for (int s = methodSelectors.length; --s >= 0;) { >+ if (methodSelectors[s] == null) continue nextSelector; >+ MethodBinding[] current = (MethodBinding[]) this.currentMethods.get(methodSelectors[s]); >+ for (int i = 0, length = current.length; i < length; i++) { >+ MethodBinding currentMethod = current[i]; >+ if ((currentMethod.modifiers & (ExtraCompilerModifiers.AccImplementing | ExtraCompilerModifiers.AccOverriding)) == 0) { >+ AbstractMethodDeclaration methodDecl = currentMethod.sourceMethod(); >+ if (methodDecl == null) return; >+ TypeBinding [] parameterTypes = currentMethod.parameters; >+ Argument[] arguments = methodDecl.arguments; >+ >+ for (int j = 0, size = currentMethod.parameters.length; j < size; j++) { >+ TypeBinding parameterType = parameterTypes[j]; >+ Argument arg = arguments[j]; >+ if (parameterType.leafComponentType().isRawType() >+ && (arg.type.bits & ASTNode.IgnoreRawTypeCheck) == 0 >+ && methodDecl.scope.compilerOptions().getSeverity(CompilerOptions.RawTypeReference) != ProblemSeverities.Ignore) { >+ methodDecl.scope.problemReporter().rawTypeReference(arg.type, parameterType); >+ } >+ } >+ } >+ } >+ } >+} > void checkMethods() { > boolean mustImplementAbstractMethods = mustImplementAbstractMethods(); > boolean skipInheritedMethods = mustImplementAbstractMethods && canSkipInheritedMethods(); // have a single concrete superclass so only check overridden methods >@@ -903,6 +936,8 @@ > this.type.detectAnnotationCycle(); > > super.verify(); >+ >+ reportRawReferences(); > > for (int i = this.type.typeVariables.length; --i >= 0;) { > TypeVariableBinding var = this.type.typeVariables[i]; >Index: compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java,v >retrieving revision 1.182 >diff -u -r1.182 SourceTypeBinding.java >--- compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java 27 Oct 2010 02:55:30 -0000 1.182 >+++ compiler/org/eclipse/jdt/internal/compiler/lookup/SourceTypeBinding.java 29 Nov 2010 10:51:48 -0000 >@@ -1377,7 +1377,12 @@ > if (arg.annotations != null) { > method.tagBits |= TagBits.HasParameterAnnotations; > } >+ boolean ignoreRawTypeCheck = (arg.type.bits & ASTNode.IgnoreRawTypeCheck) != 0; >+ arg.type.bits |= ASTNode.IgnoreRawTypeCheck; > TypeBinding parameterType = arg.type.resolveType(methodDecl.scope, true /* check bounds*/); >+ if (!ignoreRawTypeCheck) >+ arg.type.bits &= ~ASTNode.IgnoreRawTypeCheck; >+ > if (parameterType == null) { > foundArgProblem = true; > } else if (parameterType == TypeBinding.VOID) { >#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.4 >diff -u -r1.4 GenericsRegressionTest.java >--- src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java 24 Nov 2010 04:51:13 -0000 1.4 >+++ src/org/eclipse/jdt/core/tests/compiler/regression/GenericsRegressionTest.java 29 Nov 2010 10:51:50 -0000 >@@ -536,4 +536,25 @@ > }, > ""); // no specific success output string > } >+//https://bugs.eclipse.org/bugs/show_bug.cgi?id=322817 >+public void test322817() { >+ this.runNegativeTest( >+ new String[] { >+ "X.java", >+ "interface Adaptable {\n" + >+ " public Object getAdapter(Class clazz); \n" + >+ "}\n" + >+ "public class X implements Adaptable {\n" + >+ " public Object getAdapter(Class clazz) {\n" + >+ " return null;\n" + >+ " }\n" + >+ "}\n" >+ }, >+ "----------\n" + >+ "1. WARNING in X.java (at line 2)\n" + >+ " public Object getAdapter(Class clazz); \n" + >+ " ^^^^^\n" + >+ "Class is a raw type. References to generic type Class<T> should be parameterized\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 322817
:
184023
|
184108
|
184788
|
184931
|
185200