From c2dd4765a66c223aa59dfa3a55faf6a519f5b8b5 Mon Sep 17 00:00:00 2001 From: Sebastian Zarnekow Date: Thu, 12 Nov 2015 09:53:02 +0100 Subject: [PATCH 1/2] =?UTF-8?q?[grammar][serializer]=20Terminal=20fragment?= =?UTF-8?q?s=20don=E2=80=99t=20allow=20return=20types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/eclipse/xtext/xtext/XtextTransientValueService.java | 2 +- .../org/eclipse/xtext/xtext/XtextTransientValueService2.java | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService.java index b793d6d57..4ff22c34f 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService.java @@ -54,7 +54,7 @@ public class XtextTransientValueService extends DefaultTransientValueService { } } else if (rule instanceof TerminalRule) { final TypeRef returnType = rule.getType(); - return returnType == null || EcorePackage.eINSTANCE.getEString().equals(rule.getType().getClassifier()); + return ((TerminalRule) rule).isFragment() || returnType == null || EcorePackage.eINSTANCE.getEString().equals(rule.getType().getClassifier()); } } else if (feature == XtextPackage.eINSTANCE.getCrossReference_Terminal()) { diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService2.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService2.java index 6c4e36b91..5189b48b7 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService2.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService2.java @@ -60,6 +60,11 @@ public class XtextTransientValueService2 extends TransientValueService { final TypeRef returnType = rule.getType(); if (returnType == null) return YES; + if (rule instanceof TerminalRule) { + if (((TerminalRule) rule).isFragment()) { + return YES; + } + } if (EcorePackage.eINSTANCE.getEString().equals(rule.getType().getClassifier())) return PREFERABLY; return NO; From 6ffb896586919dd0017f0d36b6abad500eb8edc8 Mon Sep 17 00:00:00 2001 From: Sebastian Zarnekow Date: Thu, 12 Nov 2015 10:10:48 +0100 Subject: [PATCH 2/2] [grammar][serializer] Use the EString from the resource set --- .../org/eclipse/xtext/xtext/XtextTransientValueService.java | 3 +-- .../org/eclipse/xtext/xtext/XtextTransientValueService2.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService.java index 4ff22c34f..d2de514a0 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService.java @@ -10,7 +10,6 @@ package org.eclipse.xtext.xtext; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; -import org.eclipse.emf.ecore.EcorePackage; import org.eclipse.xtext.AbstractMetamodelDeclaration; import org.eclipse.xtext.AbstractRule; import org.eclipse.xtext.CrossReference; @@ -54,7 +53,7 @@ public class XtextTransientValueService extends DefaultTransientValueService { } } else if (rule instanceof TerminalRule) { final TypeRef returnType = rule.getType(); - return ((TerminalRule) rule).isFragment() || returnType == null || EcorePackage.eINSTANCE.getEString().equals(rule.getType().getClassifier()); + return ((TerminalRule) rule).isFragment() || returnType == null || GrammarUtil.findEString(GrammarUtil.getGrammar(owner)).equals(rule.getType().getClassifier()); } } else if (feature == XtextPackage.eINSTANCE.getCrossReference_Terminal()) { diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService2.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService2.java index 5189b48b7..210903a9e 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService2.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/xtext/XtextTransientValueService2.java @@ -65,7 +65,7 @@ public class XtextTransientValueService2 extends TransientValueService { return YES; } } - if (EcorePackage.eINSTANCE.getEString().equals(rule.getType().getClassifier())) + if (GrammarUtil.findEString(GrammarUtil.getGrammar(owner)).equals(rule.getType().getClassifier())) return PREFERABLY; return NO; }