From e5ca36dd9bf37314b780e52028b6dee55b0ee64c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miro=20Sp=C3=B6nemann?= Date: Thu, 9 Jul 2015 17:43:26 +0200 Subject: [PATCH] Regenerated Xbase and Xtend with new generator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Miro Spönemann --- .../META-INF/MANIFEST.MF | 3 ++- .../xtext/xtext/generator/XtextGenerator.xtend | 2 +- .../generator/XtextGeneratorTemplates.xtend | 16 ++++++++-------- .../xtext/generator/model/JavaFileAccess.xtend | 7 ++++++- .../xbase/XbaseGeneratorFragment2.xtend | 4 ++-- 5 files changed, 19 insertions(+), 13 deletions(-) diff --git a/plugins/org.eclipse.xtext.xtext.generator/META-INF/MANIFEST.MF b/plugins/org.eclipse.xtext.xtext.generator/META-INF/MANIFEST.MF index d134d25a6..93860bf76 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.xtext.xtext.generator/META-INF/MANIFEST.MF @@ -24,4 +24,5 @@ Import-Package: com.ibm.icu.text;version="4.0.0", org.apache.commons.logging;version="1.0.4";resolution:=optional;x-installation:=greedy, org.apache.log4j;version="1.2.15" Export-Package: org.eclipse.xtext.xtext.generator, - org.eclipse.xtext.xtext.generator.model + org.eclipse.xtext.xtext.generator.model, + org.eclipse.xtext.xtext.generator.xbase diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGenerator.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGenerator.xtend index 49ce86956..b6d29b41d 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGenerator.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGenerator.xtend @@ -142,7 +142,7 @@ class XtextGenerator extends AbstractWorkflowComponent2 implements IGuiceAwareGe protected def generateExecutableExtensionFactory(LanguageConfig2 language) { if (projectConfig.eclipsePluginSrcGen !== null) - templates.createEclipsePluginExecutableExtensionFactory(language).writeTo(projectConfig.eclipsePluginSrcGen) + templates.createEclipsePluginExecutableExtensionFactory(language, languageConfigs.head).writeTo(projectConfig.eclipsePluginSrcGen) } protected def generateManifests() { diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGeneratorTemplates.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGeneratorTemplates.xtend index 621869f7a..bdf86ba9f 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGeneratorTemplates.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/XtextGeneratorTemplates.xtend @@ -111,7 +111,6 @@ class XtextGeneratorTemplates { «usedGrammar.naming.runtimeSetup».doSetup(); «ENDFOR» «IF langConfig.grammar.usedGrammars.isEmpty» - // register default ePackages if (!«'org.eclipse.emf.ecore.resource.Resource'.typeRef».Factory.Registry.INSTANCE.getExtensionToFactoryMap().containsKey("ecore")) «'org.eclipse.emf.ecore.resource.Resource'.typeRef».Factory.Registry.INSTANCE.getExtensionToFactoryMap().put( @@ -154,7 +153,7 @@ class XtextGeneratorTemplates { ELSE »configure« ENDIF - »«key.name ?: key.type.simpleMethodName + »«key.name?.replace('.', '$') ?: key.type.simpleMethodName »«IF value.expression !== null && !value.provider»ToInstance«ENDIF»''' } @@ -207,6 +206,7 @@ class XtextGeneratorTemplates { val superClass = langConfig.runtimeGenModule.superClass ?: runtimeDefaultModule val javaFile = new JavaFileAccess(runtimeGenModule, codeConfig) javaFile.encodingProvider = encodingProvider + javaFile.importNestedTypeThreshold = JavaFileAccess.DONT_IMPORT_NESTED_TYPES javaFile.typeComment = ''' /** @@ -268,6 +268,7 @@ class XtextGeneratorTemplates { val superClass = langConfig.eclipsePluginGenModule.superClass ?: eclipsePluginDefaultModule val javaFile = new JavaFileAccess(eclipsePluginGenModule, codeConfig) javaFile.encodingProvider = encodingProvider + javaFile.importNestedTypeThreshold = JavaFileAccess.DONT_IMPORT_NESTED_TYPES javaFile.typeComment = ''' /** @@ -322,9 +323,8 @@ class XtextGeneratorTemplates { return file } - def JavaFileAccess createEclipsePluginExecutableExtensionFactory(LanguageConfig2 langConfig) { - val it = langConfig.naming - val javaFile = new JavaFileAccess(eclipsePluginExecutableExtensionFactory, codeConfig) + def JavaFileAccess createEclipsePluginExecutableExtensionFactory(LanguageConfig2 langConfig, LanguageConfig2 activatorLanguage) { + val javaFile = new JavaFileAccess(langConfig.naming.eclipsePluginExecutableExtensionFactory, codeConfig) javaFile.encodingProvider = encodingProvider javaFile.typeComment = ''' @@ -334,16 +334,16 @@ class XtextGeneratorTemplates { */ ''' javaFile.javaContent = ''' - public class «eclipsePluginExecutableExtensionFactory.simpleName» extends «'org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory'.typeRef» { + public class «langConfig.naming.eclipsePluginExecutableExtensionFactory.simpleName» extends «'org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory'.typeRef» { @Override protected «'org.osgi.framework.Bundle'.typeRef» getBundle() { - return «eclipsePluginActivator».getInstance().getBundle(); + return «activatorLanguage.naming.eclipsePluginActivator».getInstance().getBundle(); } @Override protected «Injector» getInjector() { - return «eclipsePluginActivator».getInstance().getInjector(«eclipsePluginActivator».«langConfig.grammar.name.toUpperCase.replaceAll('\\.', '_')»); + return «activatorLanguage.naming.eclipsePluginActivator».getInstance().getInjector(«activatorLanguage.naming.eclipsePluginActivator».«langConfig.grammar.name.toUpperCase.replaceAll('\\.', '_')»); } } diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/model/JavaFileAccess.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/model/JavaFileAccess.xtend index 82940c2cf..96501e373 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/model/JavaFileAccess.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/model/JavaFileAccess.xtend @@ -19,6 +19,8 @@ import org.eclipse.xtext.xtext.generator.CodeConfig class JavaFileAccess extends TextFileAccess { + public static val DONT_IMPORT_NESTED_TYPES = Integer.MAX_VALUE + val Map imports = newHashMap val TypeReference javaType @@ -28,6 +30,9 @@ class JavaFileAccess extends TextFileAccess { @Accessors CharSequence typeComment + @Accessors + int importNestedTypeThreshold = 8 + @Accessors boolean markedAsGenerated @@ -64,7 +69,7 @@ class JavaFileAccess extends TextFileAccess { else usableName = simpleName + '.' + usableName if (!CodeGenUtil.isJavaDefaultType(simpleName) - && !(i == simpleNames.length - 1 && i > 0 && simpleName.length <= 8)) { + && !(i > 0 && simpleName.length <= importNestedTypeThreshold)) { val importable = typeRef.packageName + '.' + simpleNames.subList(0, i + 1).join('.') val imported = imports.get(usableName) if (imported === null) { diff --git a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.xtend b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.xtend index a22ad1336..cb30f3dbc 100644 --- a/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.xtend +++ b/plugins/org.eclipse.xtext.xtext.generator/src/org/eclipse/xtext/xtext/generator/xbase/XbaseGeneratorFragment2.xtend @@ -85,7 +85,7 @@ class XbaseGeneratorFragment2 extends AbstractGeneratorFragment2 { addEclipsePluginGuiceBindings(language) if (projectConfig.eclipsePluginPluginXml !== null) addEclipsePluginExtensions(language) - if (!projectConfig.runtimeSrc.containsXtendFile(language.jvmModelInferrer)) + if (generateXtendInferrer && !projectConfig.runtimeSrc.containsXtendFile(language.jvmModelInferrer)) doGenerateXtendInferrer(language) if (projectConfig.runtimeManifest !== null) { @@ -202,7 +202,7 @@ class XbaseGeneratorFragment2 extends AbstractGeneratorFragment2 { 'org.eclipse.xtext.xbase.ui.imports.InteractiveUnresolvedTypeResolver'.typeRef) .addTypeToType('org.eclipse.xtext.common.types.xtext.ui.ITypesProposalProvider'.typeRef, 'org.eclipse.xtext.xbase.ui.contentassist.ImportingTypesProposalProvider'.typeRef) - .addTypeToType(' org.eclipse.xtext.ui.editor.templates.XtextTemplateContextType'.typeRef, + .addTypeToType('org.eclipse.xtext.ui.editor.templates.XtextTemplateContextType'.typeRef, 'org.eclipse.xtext.xbase.ui.templates.XbaseTemplateContextType'.typeRef) } else { bindingFactory