From 208bc7624e9412fae9fdb9b72be91708cfeb432a Mon Sep 17 00:00:00 2001 From: Sven Efftinge Date: Tue, 2 Feb 2016 20:54:08 +0100 Subject: [PATCH 1/4] [junit] CompositeEValidator - added operationCanceledManager to the copy method --- .../src/org/eclipse/xtext/validation/CompositeEValidator.java | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/CompositeEValidator.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/CompositeEValidator.java index 7b2e61f6d..8d33e5b63 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/CompositeEValidator.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/CompositeEValidator.java @@ -215,6 +215,7 @@ public class CompositeEValidator implements EValidator { CompositeEValidator result = new CompositeEValidator(); result.equalitySupportProvider = this.equalitySupportProvider; result.useEObjectValidator = this.useEObjectValidator; + result.operationCanceledManager = this.operationCanceledManager; if (this.contents != null) { result.contents = Lists.newArrayList(this.contents); this.contents = null; From b4bcf93b6e32c381c6c68324166f3103c3886319 Mon Sep 17 00:00:00 2001 From: Jan Koehnlein Date: Tue, 9 Feb 2016 14:35:02 +0100 Subject: [PATCH 2/4] [bug 487508] added an NPE guard in IDEA generator --- .../xtext/xtext/generator/idea/IdeaPluginGenerator.xtend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.xtend index 1adddbfcb..442d5a894 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/idea/IdeaPluginGenerator.xtend @@ -718,7 +718,7 @@ class IdeaPluginGenerator extends AbstractStubGeneratingFragment { } val classifier = type?.classifier val feature = if(classifier instanceof EClass) classifier.getEStructuralFeature('name') - feature instanceof EAttribute && !feature.many && String.isAssignableFrom(feature.EType.instanceClass) + feature instanceof EAttribute && !feature.many && feature?.EType?.instanceClass != null && String.isAssignableFrom(feature.EType.instanceClass) } def compileAbstractCompletionContributor(Grammar grammar) { From 5dd3aaf9716d9bc6f6cd9c1c9248593e5f1e11e3 Mon Sep 17 00:00:00 2001 From: Jan Koehnlein Date: Thu, 11 Feb 2016 16:34:33 +0100 Subject: [PATCH 3/4] [bug 487622] register Ecore.ecore directly to resourceSet in generator --- .../xtext/generator/XtextGeneratorResourceSetInitializer.xtend | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGeneratorResourceSetInitializer.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGeneratorResourceSetInitializer.xtend index da8675f6b..c81e08abf 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGeneratorResourceSetInitializer.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGeneratorResourceSetInitializer.xtend @@ -19,6 +19,7 @@ import org.eclipse.emf.mwe.utils.StandaloneSetup import org.eclipse.xtext.ecore.EcoreSupportStandaloneSetup import org.eclipse.xtext.resource.IResourceServiceProvider import org.eclipse.xtext.util.internal.Log +import org.eclipse.emf.ecore.EcorePackage /** * @noextend @@ -30,6 +31,7 @@ class XtextGeneratorResourceSetInitializer { public def void initialize(ResourceSet resourceSet, List referencedResources) { val delegate = new StandaloneSetup delegate.resourceSet = resourceSet + resourceSet.packageRegistry.put(EcorePackage.eNS_URI, EcorePackage.eINSTANCE) referencedResources.forEach[ loadResource(resourceSet) ] From 0319d7a2b897f7fa465760d55e48b1c4d6788411 Mon Sep 17 00:00:00 2001 From: Trabajo Date: Fri, 19 Feb 2016 17:01:20 +0100 Subject: [PATCH 4/4] [bug 486980] add JavaDocs to describe how to compose validators --- .../xtext/validation/AbstractInjectableValidator.java | 4 ++++ .../src/org/eclipse/xtext/validation/ComposedChecks.java | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/AbstractInjectableValidator.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/AbstractInjectableValidator.java index 75d467b7a..c0928d17d 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/AbstractInjectableValidator.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/AbstractInjectableValidator.java @@ -73,6 +73,10 @@ public abstract class AbstractInjectableValidator implements EValidator { protected abstract boolean internalValidate(EClass eClass, EObject eObject, DiagnosticChain diagnostics, Map context); + /** + * If this validator is for an EPackage you want to use in multiple languages, + * this method should return false. Otherwise issues will be reported twice. + */ public boolean isLanguageSpecific() { return languageName != null; } diff --git a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/ComposedChecks.java b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/ComposedChecks.java index 088069a07..db3cc1fa3 100644 --- a/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/ComposedChecks.java +++ b/plugins/org.eclipse.xtext/src/org/eclipse/xtext/validation/ComposedChecks.java @@ -13,6 +13,11 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; /** + * Annotation that allows to modularize the validator into multiple classes. + * + * The listed validators should override the method {@link AbstractDeclarativeValidator#register(EValidatorRegistrar)} + * with an empty implementation otherwise all issues will be reported twice. + * * @author Sebastian Zarnekow - Initial contribution and API */ @Retention(RetentionPolicy.RUNTIME)