Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEd Merks2018-11-09 06:56:10 +0000
committerEd Merks2018-11-09 06:56:10 +0000
commit8f97153bc47120f7777bedf64e53a7431668e2b5 (patch)
tree1a884f13bff983bab6e0ac418ba1dbaaa10ceb6a
parent4d16bfa6756ec1e4f672e9c0b26c29434c3b34a1 (diff)
downloadorg.eclipse.emf-8f97153bc47120f7777bedf64e53a7431668e2b5.tar.gz
org.eclipse.emf-8f97153bc47120f7777bedf64e53a7431668e2b5.tar.xz
org.eclipse.emf-8f97153bc47120f7777bedf64e53a7431668e2b5.zip
[540942] Import manager drops array type for generic array types
-rw-r--r--plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenClassifierImpl.java56
-rw-r--r--plugins/org.eclipse.emf.codegen/src/org/eclipse/emf/codegen/util/ImportManager.java2
2 files changed, 54 insertions, 4 deletions
diff --git a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenClassifierImpl.java b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenClassifierImpl.java
index 8a7fcde66..0cc8790f3 100644
--- a/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenClassifierImpl.java
+++ b/plugins/org.eclipse.emf.codegen.ecore/src/org/eclipse/emf/codegen/ecore/genmodel/impl/GenClassifierImpl.java
@@ -412,10 +412,58 @@ public abstract class GenClassifierImpl extends GenBaseImpl implements GenClassi
public boolean isUncheckedCast()
{
- return
- getEffectiveComplianceLevel().getValue() >= GenJDKLevel.JDK50 &&
- getEcoreClassifier().getInstanceTypeName() != null &&
- getEcoreClassifier().getInstanceTypeName().indexOf('<') != -1;
+ if (getEffectiveComplianceLevel().getValue() < GenJDKLevel.JDK50)
+ {
+ return false;
+ }
+ else
+ {
+ String instanceTypeName = getEcoreClassifier().getInstanceTypeName();
+ if (instanceTypeName == null)
+ {
+ return false;
+ }
+ else
+ {
+ int index = instanceTypeName.indexOf('<');
+ if (index == -1)
+ {
+ return false;
+ }
+ else
+ {
+ int end = instanceTypeName.lastIndexOf('>');
+ if (end == -1)
+ {
+ return false;
+ }
+ else
+ {
+ // A generic type with only wild cards arguments is not an unchecked cast.
+ //
+ for (int i = index + 1 ; i < end; ++i)
+ {
+ char character = instanceTypeName.charAt(i);
+ switch (character)
+ {
+ case ' ':
+ case '?':
+ case ',':
+ case '>':
+ {
+ break;
+ }
+ default:
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+ }
+ }
+ }
}
public String getImportedParameterizedInstanceClassName()
diff --git a/plugins/org.eclipse.emf.codegen/src/org/eclipse/emf/codegen/util/ImportManager.java b/plugins/org.eclipse.emf.codegen/src/org/eclipse/emf/codegen/util/ImportManager.java
index e6a95d40d..ee8814c66 100644
--- a/plugins/org.eclipse.emf.codegen/src/org/eclipse/emf/codegen/util/ImportManager.java
+++ b/plugins/org.eclipse.emf.codegen/src/org/eclipse/emf/codegen/util/ImportManager.java
@@ -324,6 +324,8 @@ public class ImportManager
case '<':
case '>':
case '&':
+ case '[':
+ case ']':
{
if (start != i)
{

Back to the top