Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Merks2015-03-31 10:50:11 +0000
committerEd Merks2015-03-31 10:50:11 +0000
commit6103633bba0931f623916df313976947264a95a1 (patch)
tree975d6b150a0b5b872580b9d688103c0e6dd48402
parent033f4470930dee81dee7089b9a94053081abc244 (diff)
downloadorg.eclipse.emf-6103633bba0931f623916df313976947264a95a1.tar.gz
org.eclipse.emf-6103633bba0931f623916df313976947264a95a1.tar.xz
org.eclipse.emf-6103633bba0931f623916df313976947264a95a1.zip
[421592] Colliding operations should be more careful of mixins.
-rw-r--r--plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenClassImpl.java39
1 files changed, 24 insertions, 15 deletions
diff --git a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenClassImpl.java b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenClassImpl.java
index fd6aafefd..5b453cb2f 100644
--- a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenClassImpl.java
+++ b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenClassImpl.java
@@ -3512,16 +3512,19 @@ public class GenClassImpl extends GenClassifierImpl implements GenClass
{
for (GenFeature genFeature : allGenFeatures)
{
- if (genFeature.isChangeable() &&
- genFeature.isUnsettable() &&
+ if (genFeature.isChangeable() &&
+ genFeature.isUnsettable() &&
genOperation.getName().equals("isSet" + genFeature.getAccessorName()) &&
- (!hasBody || genFeature.isVolatile() && !genFeature.hasDelegateFeature() && !extendsGenClassFeatures.contains(genFeature)))
+ (!hasBody ||
+ !extendsGenClassFeatures.contains(genFeature) &&
+ (genFeature.isVolatile() && !genFeature.hasDelegateFeature() ||
+ genFeature.getGenClass() != GenClassImpl.this && !genFeature.getGenClass().hasCollidingIsSetAccessorOperation(genFeature))))
{
return false;
}
}
}
- else if ((genOperation.getName().startsWith("get") || genOperation.getName().startsWith("is")) &&
+ else if ((genOperation.getName().startsWith("get") || genOperation.getName().startsWith("is")) &&
genOperation.getGenParameters().isEmpty())
{
String operationType = genOperation.getType(GenClassImpl.this);
@@ -3529,11 +3532,10 @@ public class GenClassImpl extends GenClassifierImpl implements GenClass
{
if (genFeature.getGetAccessor().equals(genOperation.getName()) &&
(genFeature.getType(GenClassImpl.this).equals(operationType) || !extendsGenClassFeatures.contains(genFeature)) &&
- (!hasBody ||
- genFeature.isVolatile() &&
- (!genFeature.isResolveProxies() || genFeature.isListType()) &&
- !genFeature.hasDelegateFeature() &&
- !extendsGenClassFeatures.contains(genFeature)))
+ (!hasBody ||
+ !extendsGenClassFeatures.contains(genFeature) &&
+ (genFeature.isVolatile() && (!genFeature.isResolveProxies() || genFeature.isListType()) && !genFeature.hasDelegateFeature() ||
+ genFeature.getGenClass() != GenClassImpl.this && !genFeature.getGenClass().hasCollidingGetAccessorOperation(genFeature))))
{
return false;
}
@@ -3544,11 +3546,14 @@ public class GenClassImpl extends GenClassifierImpl implements GenClass
GenParameter genParameter = genOperation.getGenParameters().get(0);
for (GenFeature genFeature : allGenFeatures)
{
- if (genFeature.isChangeable() &&
- !genFeature.isListType() &&
- genOperation.getName().equals("set" + genFeature.getAccessorName()) &&
+ if (genFeature.isChangeable() &&
+ !genFeature.isListType() &&
+ genOperation.getName().equals("set" + genFeature.getAccessorName()) &&
genParameter.getType(GenClassImpl.this).equals(genFeature.getType(GenClassImpl.this)) &&
- (!hasBody || genFeature.isVolatile() && !genFeature.hasDelegateFeature() && !extendsGenClassFeatures.contains(genFeature)))
+ (!hasBody ||
+ !extendsGenClassFeatures.contains(genFeature) &&
+ (genFeature.isVolatile() && !genFeature.hasDelegateFeature() ||
+ genFeature.getGenClass() != GenClassImpl.this && !genFeature.getGenClass().hasCollidingSetAccessorOperation(genFeature))))
{
return false;
}
@@ -3558,9 +3563,13 @@ public class GenClassImpl extends GenClassifierImpl implements GenClass
{
for (GenFeature genFeature : allGenFeatures)
{
- if (genFeature.isChangeable() && genFeature.isUnsettable() &&
+ if (genFeature.isChangeable() &&
+ genFeature.isUnsettable() &&
genOperation.getName().equals("unset" + genFeature.getAccessorName()) &&
- (!hasBody || genFeature.isVolatile() && !genFeature.hasDelegateFeature() && !extendsGenClassFeatures.contains(genFeature)))
+ (!hasBody ||
+ !extendsGenClassFeatures.contains(genFeature) &&
+ (genFeature.isVolatile() && !genFeature.hasDelegateFeature() ||
+ genFeature.getGenClass() != GenClassImpl.this && !genFeature.getGenClass().hasCollidingUnsetAccessorOperation(genFeature))))
{
return false;
}

Back to the top