Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2014-04-17 20:24:17 +0000
committerStephan Herrmann2014-04-17 20:24:17 +0000
commitae0aa8fb793a31f04565f81a50319bdd6171d71a (patch)
treea166a7f4ebb2f47254f4d06e9a6fcc43b4196e2d
parented9049cbf4619a2b507959b4db56d3966d1f2122 (diff)
downloadorg.eclipse.objectteams-ae0aa8fb793a31f04565f81a50319bdd6171d71a.tar.gz
org.eclipse.objectteams-ae0aa8fb793a31f04565f81a50319bdd6171d71a.tar.xz
org.eclipse.objectteams-ae0aa8fb793a31f04565f81a50319bdd6171d71a.zip
Bug 397182 - Prepare OTDT for new (dynamic) weaver
- fix test242_inaccessibleBaseClass16: "unchecked" warning
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java14
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java7
2 files changed, 20 insertions, 1 deletions
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java
index dfb7270c1..d951b1153 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/problem/ProblemReporter.java
@@ -9194,6 +9194,20 @@ public void unsafeTypeConversion(Expression expression, TypeBinding expressionTy
expression.sourceStart,
expression.sourceEnd);
}
+//{ObjectTeams: variant:
+public void unsafeTypeConversion(MethodSpec spec, TypeBinding expressionType, TypeBinding expectedType) {
+ if (this.options.sourceLevel < ClassFileConstants.JDK1_5) return; // https://bugs.eclipse.org/bugs/show_bug.cgi?id=305259
+ int severity = computeSeverity(IProblem.UnsafeTypeConversion);
+ if (severity == ProblemSeverities.Ignore) return;
+ this.handle(
+ IProblem.UnsafeTypeConversion,
+ new String[] { new String(expressionType.readableName()), new String(expectedType.readableName()), new String(expectedType.erasure().readableName()) },
+ new String[] { new String(expressionType.shortReadableName()), new String(expectedType.shortReadableName()), new String(expectedType.erasure().shortReadableName()) },
+ severity,
+ spec.sourceStart,
+ spec.sourceEnd);
+}
+// SH}
public void unsafeElementTypeConversion(Expression expression, TypeBinding expressionType, TypeBinding expectedType) {
if (this.options.sourceLevel < ClassFileConstants.JDK1_5) return; // https://bugs.eclipse.org/bugs/show_bug.cgi?id=305259
int severity = computeSeverity(IProblem.UnsafeElementTypeConversion);
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java
index 4f66cd2bc..4e9089e32 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java
@@ -224,6 +224,8 @@ public class CalloutMappingDeclaration extends AbstractMethodMappingDeclaration
if (providedType.isCompatibleWith(requiredType)) {
if (this.roleMethodSpec.returnType.resolvedType == null)
this.roleMethodSpec.returnType.resolvedType = requiredType; // need a valid type here
+ if (providedType.needsUncheckedConversion(requiredType))
+ this.scope.problemReporter().unsafeTypeConversion(fieldSpec, providedType, requiredType);
return; // OK => done
} else {
TypeBinding roleToLiftTo = TeamModel.getRoleToLiftTo(this.scope, providedType, requiredType, false, fieldSpec);
@@ -259,8 +261,11 @@ public class CalloutMappingDeclaration extends AbstractMethodMappingDeclaration
}
providedType = params[0];
requiredType = fieldSpec.resolvedType();
- if (providedType.isCompatibleWith(requiredType))
+ if (providedType.isCompatibleWith(requiredType)) {
+ if (providedType.needsUncheckedConversion(requiredType))
+ this.scope.problemReporter().unsafeTypeConversion(this.roleMethodSpec, providedType, requiredType);
return;
+ }
}
// fall through in any case of incompatibility:
this.scope.problemReporter().calloutIncompatibleFieldType(

Back to the top