Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Herrmann2013-01-06 17:26:22 -0500
committerStephan Herrmann2013-01-22 15:51:19 -0500
commit605b6e6bd65dcc4e390ba2831833e4e10c1a6a80 (patch)
treedce3ed2eb36f9bad0bcd1073244b5ca0d3e4f4c4
parentcc2a175433fcfa4cb4eb3de3de726e97d36a672f (diff)
downloadorg.eclipse.objectteams-605b6e6bd65dcc4e390ba2831833e4e10c1a6a80.tar.gz
org.eclipse.objectteams-605b6e6bd65dcc4e390ba2831833e4e10c1a6a80.tar.xz
org.eclipse.objectteams-605b6e6bd65dcc4e390ba2831833e4e10c1a6a80.zip
Bug 397192 - Prepare OTDT for new (dynamic) weaver:
Avoid AIOOBE during reconcile of BuildManager (with rofi ImageBuilder) baseSpec.callinId was -1, but the baseSpec wasn't resolved either
-rw-r--r--org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java
index b59f4239b..d9bfa8cb6 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java
@@ -378,6 +378,8 @@ public class CallinImplementorDyn extends MethodMappingImplementor {
{
if (callinDecl.ignoreFurtherInvestigation || RoleModel.isRoleWithBaseProblem(callinDecl.scope.referenceType()))
continue;
+ if (!callinDecl.hasParsedParamMappings) // during reconcile we may not be interested in this level of detail (e.g., of a role file)
+ continue;
gen.retargetFrom(callinDecl);
@@ -661,7 +663,7 @@ public class CallinImplementorDyn extends MethodMappingImplementor {
blockStatements.add(protectRoleMethodCall(messageSendStatements, roleMethodBinding, resetFlag, gen));
statements.add(gen.block(blockStatements.toArray(new Statement[blockStatements.size()])));
// collectively report the problem(s)
- if (canLiftingFail)
+ if (canLiftingFail && callinDecl.rolesWithLiftingProblem != null)
for (Map.Entry<ReferenceBinding, Integer> entry : callinDecl.rolesWithLiftingProblem.entrySet())
callinDecl.scope.problemReporter().callinDespiteLiftingProblem(entry.getKey(), entry.getValue(), callinDecl);
}

Back to the top