Skip to content

Commit

Permalink
[lang][ui] Extra-Language validator becomes a sub-validator of the SA…
Browse files Browse the repository at this point in the history
…RL UI validator.

close #703

Signed-off-by: Stéphane Galland <galland@arakhne.org>
  • Loading branch information
gallandarakhneorg committed Jul 19, 2017
1 parent 28fafdb commit 0acf058
Show file tree
Hide file tree
Showing 13 changed files with 263 additions and 34 deletions.
Expand Up @@ -36,10 +36,12 @@
import org.eclipse.xtext.validation.Check;
import org.eclipse.xtext.xbase.XFeatureCall;
import org.eclipse.xtext.xbase.XMemberFeatureCall;
import org.eclipse.xtext.xbase.XbasePackage;
import org.eclipse.xtext.xbase.featurecalls.IdentifiableSimpleNameProvider;
import org.eclipse.xtext.xbase.lib.Functions.Function2;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure3;
import org.eclipse.xtext.xtype.XImportDeclaration;
import org.eclipse.xtext.xtype.XtypePackage;

import io.sarl.lang.generator.extra.IExtraLanguageConversionInitializer;
import io.sarl.lang.validation.extra.AbstractExtraLanguageValidator;
Expand All @@ -59,8 +61,16 @@ public class PyValidator extends AbstractExtraLanguageValidator {

/** Error handler for the type conversions.
*/
private final Procedure3<EObject, JvmType, String> typeErrorHandler = (source, invalidType, name) -> {
error(MessageFormat.format(Messages.PyValidator_0, name), source);
private final Procedure3<EObject, JvmType, String> typeErrorHandler1 = (source, invalidType, name) -> {
error(MessageFormat.format(Messages.PyValidator_0, name), source,
XtypePackage.eINSTANCE.getXImportDeclaration_ImportedType());
};

/** Error handler for the type conversions.
*/
private final Procedure3<EObject, JvmType, String> typeErrorHandler2 = (source, invalidType, name) -> {
error(MessageFormat.format(Messages.PyValidator_0, name), source,
XbasePackage.eINSTANCE.getXAbstractFeatureCall_Feature());
};

/** Error handler for the feature conversions.
Expand All @@ -77,7 +87,7 @@ public class PyValidator extends AbstractExtraLanguageValidator {
// This type of JVM element is not supposed to be converted
return false;
}
error(message, source);
error(message, source, XbasePackage.eINSTANCE.getXAbstractFeatureCall_Feature());
return true;
};

Expand Down Expand Up @@ -111,7 +121,7 @@ protected String getErrorMessageFormat() {
@Check
public void checkImportsMapping(XImportDeclaration importDeclaration) {
final JvmDeclaredType type = importDeclaration.getImportedType();
doTypeMappingCheck(importDeclaration, type, this.typeErrorHandler);
doTypeMappingCheck(importDeclaration, type, this.typeErrorHandler1);
}

/** Check that member feature calls have a conversion mapping.
Expand All @@ -120,7 +130,7 @@ public void checkImportsMapping(XImportDeclaration importDeclaration) {
*/
@Check
public void checkMemberFeatureCallMapping(XMemberFeatureCall featureCall) {
doCheckMemberFeatureCallMapping(featureCall, this.typeErrorHandler, this.featureErrorHandler);
doCheckMemberFeatureCallMapping(featureCall, this.typeErrorHandler2, this.featureErrorHandler);
}

/** Check that member feature calls have a conversion mapping.
Expand All @@ -129,7 +139,7 @@ public void checkMemberFeatureCallMapping(XMemberFeatureCall featureCall) {
*/
@Check
public void checkMemberFeatureCallMapping(XFeatureCall featureCall) {
doCheckMemberFeatureCallMapping(featureCall, this.typeErrorHandler, this.featureErrorHandler);
doCheckMemberFeatureCallMapping(featureCall, this.typeErrorHandler2, this.featureErrorHandler);
}

}
2 changes: 1 addition & 1 deletion main/coreplugins/io.sarl.lang.mwe2/GenerateSARL2.mwe2
Expand Up @@ -735,7 +735,7 @@ Workflow {
}
ui = {
bind = "org.eclipse.xtext.generator.IGenerator"
to = "io.sarl.lang.generator.extra.ExtraLanguageSupportGenerator"
to = "io.sarl.lang.generator.extra.ExtraLanguageGeneratorSupport"
}
ui = {
bind = "io.sarl.lang.generator.extra.IExtraLanguageGeneratorProvider"
Expand Down
Expand Up @@ -28,7 +28,7 @@
import com.google.inject.name.Names;
import io.sarl.lang.generator.IGeneratorConfigProvider2;
import io.sarl.lang.generator.extra.ExtraLanguageFeatureNameConverter;
import io.sarl.lang.generator.extra.ExtraLanguageSupportGenerator;
import io.sarl.lang.generator.extra.ExtraLanguageGeneratorSupport;
import io.sarl.lang.generator.extra.ExtraLanguageTypeConverter;
import io.sarl.lang.generator.extra.IExtraLanguageGeneratorProvider;
import io.sarl.lang.ide.contentassist.antlr.PartialSARLContentAssistParser;
Expand Down Expand Up @@ -705,7 +705,7 @@ public Class<? extends IExtraLanguageGeneratorProvider> bindIExtraLanguageGenera

// contributed by io.sarl.lang.mwe2.binding.InjectionFragment2 [Bindings provided by SARL API]
public Class<? extends IGenerator> bindIGenerator() {
return ExtraLanguageSupportGenerator.class;
return ExtraLanguageGeneratorSupport.class;
}

// contributed by io.sarl.lang.mwe2.binding.InjectionFragment2 [Bindings provided by SARL API]
Expand Down
Expand Up @@ -34,7 +34,7 @@
import org.eclipse.xtext.ui.editor.autoedit.AbstractEditStrategy;
import org.eclipse.xtext.validation.IssueSeveritiesProvider;

import io.sarl.lang.generator.extra.ExtraLanguageSupportGenerator;
import io.sarl.lang.generator.extra.ExtraLanguageGeneratorSupport;
import io.sarl.lang.ui.bugfixes.pending.xtexteclipse282.Issue282BuilderConfigurationBlock;
import io.sarl.lang.ui.validation.UIConfigurableIssueSeveritiesProvider;
import io.sarl.lang.validation.IConfigurableIssueSeveritiesProvider;
Expand Down Expand Up @@ -102,7 +102,7 @@ public void configure(Binder binder) {
binder.bind(IssueSeveritiesProvider.class).toProvider(provider);
binder.bind(IConfigurableIssueSeveritiesProvider.class).toProvider(provider);
// Configure the extra generator/validator provider.
binder.bind(IGenerator2.class).annotatedWith(Names.named(ExtraLanguageSupportGenerator.MAIN_GENERATOR_NAME))
binder.bind(IGenerator2.class).annotatedWith(Names.named(ExtraLanguageGeneratorSupport.MAIN_GENERATOR_NAME))
.to(XtendGenerator.class);
}

Expand Down
Expand Up @@ -31,10 +31,15 @@
import org.eclipse.xtend.core.xtend.XtendFile;
import org.eclipse.xtend.core.xtend.XtendPackage;
import org.eclipse.xtend.ide.validator.XtendUIValidator;
import org.eclipse.xtext.common.types.TypesPackage;
import org.eclipse.xtext.validation.Check;
import org.eclipse.xtext.validation.ComposedChecks;
import org.eclipse.xtext.validation.ValidationMessageAcceptor;
import org.eclipse.xtext.xbase.XbasePackage;
import org.eclipse.xtext.xbase.annotations.xAnnotations.XAnnotationsPackage;
import org.eclipse.xtext.xtype.XtypePackage;

import io.sarl.lang.sarl.SarlPackage;
import io.sarl.lang.validation.extra.ExtraLanguageValidatorSupport;

/** Validator based on the Eclipse UI.
*
Expand All @@ -43,17 +48,18 @@
* @mavengroupid $GroupId$
* @mavenartifactid $ArtifactId$
*/
@ComposedChecks(validators = {ExtraLanguageValidatorSupport.class})
public class SARLUIValidator extends XtendUIValidator {

@Override
protected List<EPackage> getEPackages() {
final List<EPackage> packages = super.getEPackages();
packages.add(SarlPackage.eINSTANCE);
packages.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtend")); //$NON-NLS-1$
packages.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xbase")); //$NON-NLS-1$
packages.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/common/JavaVMTypes")); //$NON-NLS-1$
packages.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/xtext/xbase/Xtype")); //$NON-NLS-1$
packages.add(EPackage.Registry.INSTANCE.getEPackage("http://www.eclipse.org/Xtext/Xbase/XAnnotations")); //$NON-NLS-1$
packages.add(io.sarl.lang.sarl.SarlPackage.eINSTANCE);
packages.add(XtendPackage.eINSTANCE);
packages.add(XbasePackage.eINSTANCE);
packages.add(TypesPackage.eINSTANCE);
packages.add(XtypePackage.eINSTANCE);
packages.add(XAnnotationsPackage.eINSTANCE);
return packages;
}

Expand Down
Expand Up @@ -23,13 +23,13 @@

import java.lang.ref.SoftReference;
import java.util.Collections;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Singleton;

import com.google.inject.Injector;
import org.eclipse.core.resources.IProject;
import org.eclipse.emf.ecore.EValidator;
import org.eclipse.emf.ecore.resource.Resource;

import io.sarl.lang.ui.generator.extra.ProjectAdapter;
Expand Down Expand Up @@ -72,7 +72,7 @@ public abstract class AbstractExtraLanguageValidatorProvider<T extends AbstractE
protected abstract String getPluginID();

@Override
public Iterable<EValidator> getValidators(Resource resource) {
public List<AbstractExtraLanguageValidator> getValidators(Resource resource) {
final IProject project = ProjectAdapter.getProject(resource);
if (this.preferences.isGeneratorEnabled(
getPluginID(),
Expand Down
Expand Up @@ -32,11 +32,11 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.ecore.EValidator;
import org.eclipse.emf.ecore.resource.Resource;

import io.sarl.lang.ui.SARLUiConfig;
import io.sarl.lang.ui.internal.LangActivator;
import io.sarl.lang.validation.extra.AbstractExtraLanguageValidator;
import io.sarl.lang.validation.extra.IExtraLanguageValidatorProvider;

/** Implementation of the provider of the extra language generators that replies no generator.
Expand All @@ -57,8 +57,8 @@ public class ExtensionPointExtraLanguageValidatorProvider implements IExtraLangu
private List<IExtraLanguageValidatorProvider> providers;

@Override
public Iterable<EValidator> getValidators(Resource resource) {
final List<EValidator> validators = new ArrayList<>();
public List<AbstractExtraLanguageValidator> getValidators(Resource resource) {
final List<AbstractExtraLanguageValidator> validators = new ArrayList<>();
if (this.providers == null) {
this.providers = new ArrayList<>();
final IExtensionPoint extensionPoint = Platform.getExtensionRegistry().getExtensionPoint(
Expand All @@ -82,7 +82,7 @@ public Iterable<EValidator> getValidators(Resource resource) {
}
}
for (final IExtraLanguageValidatorProvider provider: this.providers) {
for (final EValidator validator : provider.getValidators(resource)) {
for (final AbstractExtraLanguageValidator validator : provider.getValidators(resource)) {
validators.add(validator);
}
}
Expand Down
Expand Up @@ -43,7 +43,7 @@
* @mavenartifactid $ArtifactId$
* @since 0.6
*/
public class ExtraLanguageSupportGenerator implements IGenerator, IGenerator2 {
public class ExtraLanguageGeneratorSupport implements IGenerator, IGenerator2 {

/** Name of the injected element for the main generator.
*/
Expand Down
Expand Up @@ -170,7 +170,7 @@ public final class IssueCodes {
ISSUE_CODE_PREFIX + "invalid_use_of_break"; //$NON-NLS-1$

/**
* Invalid extr-language generation.
* Invalid extra-language generation.
* @since 0.6
*/
public static final String INVALID_EXTRA_LANGUAGE_GENERATION =
Expand Down

0 comments on commit 0acf058

Please sign in to comment.