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;