From c2dd4765a66c223aa59dfa3a55faf6a519f5b8b5 Mon Sep 17 00:00:00 2001 From: Sebastian Zarnekow Date: Thu, 12 Nov 2015 09:53:02 +0100 Subject: [PATCH] =?UTF-8?q?[grammar][serializer]=20Terminal=20fragments=20?= =?UTF-8?q?don=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;