diff options
author | Stephan Herrmann | 2014-04-17 20:24:17 +0000 |
---|---|---|
committer | Stephan Herrmann | 2014-04-17 20:24:17 +0000 |
commit | ae0aa8fb793a31f04565f81a50319bdd6171d71a (patch) | |
tree | a166a7f4ebb2f47254f4d06e9a6fcc43b4196e2d | |
parent | ed9049cbf4619a2b507959b4db56d3966d1f2122 (diff) | |
download | org.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
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( |