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..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 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 6c4e36b91..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 @@ -60,7 +60,12 @@ public class XtextTransientValueService2 extends TransientValueService { final TypeRef returnType = rule.getType(); if (returnType == null) return YES; - if (EcorePackage.eINSTANCE.getEString().equals(rule.getType().getClassifier())) + if (rule instanceof TerminalRule) { + if (((TerminalRule) rule).isFragment()) { + return YES; + } + } + if (GrammarUtil.findEString(GrammarUtil.getGrammar(owner)).equals(rule.getType().getClassifier())) return PREFERABLY; return NO; }