diff options
author | Ed Merks | 2015-03-31 10:50:11 +0000 |
---|---|---|
committer | Ed Merks | 2015-03-31 10:50:11 +0000 |
commit | 6103633bba0931f623916df313976947264a95a1 (patch) | |
tree | 975d6b150a0b5b872580b9d688103c0e6dd48402 | |
parent | 033f4470930dee81dee7089b9a94053081abc244 (diff) | |
download | org.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.java | 39 |
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; } |