mirror of
https://github.com/sigmasternchen/xtext-core
synced 2025-03-16 08:48:55 +00:00
[generator] various minor fixes, first work on generating runtime test languages with new generator
- support isGenerateXtend in IdeaPluginGenerator - allow setting overWriteSrc (useful for testing) - allow disabling outlets via empty string (mwe2)
This commit is contained in:
parent
68b8a035af
commit
77f645afba
5 changed files with 806 additions and 54 deletions
|
@ -35,7 +35,7 @@ import org.eclipse.xtext.parser.antlr.Lexer
|
|||
import org.eclipse.xtext.parser.antlr.LexerBindings
|
||||
import org.eclipse.xtext.service.LanguageSpecific
|
||||
import org.eclipse.xtext.util.Modules2
|
||||
import org.eclipse.xtext.xtext.generator.AbstractXtextGeneratorFragment
|
||||
import org.eclipse.xtext.xtext.generator.AbstractStubGeneratingFragment
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorNaming
|
||||
import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessExtensions
|
||||
import org.eclipse.xtext.xtext.generator.model.FileAccessFactory
|
||||
|
@ -49,8 +49,10 @@ import org.eclipse.xtext.xtext.generator.xbase.XbaseUsageDetector
|
|||
import static extension org.eclipse.xtext.EcoreUtil2.*
|
||||
import static extension org.eclipse.xtext.GrammarUtil.*
|
||||
import static extension org.eclipse.xtext.xtext.generator.model.TypeReference.*
|
||||
import com.google.inject.Injector
|
||||
import com.google.inject.Module
|
||||
|
||||
class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
|
||||
class IdeaPluginGenerator extends AbstractStubGeneratingFragment {
|
||||
@Inject extension XtextGeneratorNaming
|
||||
@Inject extension XbaseUsageDetector
|
||||
@Inject ContentAssistGrammarNaming caNaming
|
||||
|
@ -396,15 +398,28 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
|
|||
}
|
||||
|
||||
def compileFileType(Grammar grammar) {
|
||||
fileAccessFactory.createXtendFile(grammar.fileType, '''
|
||||
class «grammar.fileType.simpleName» extends «grammar.abstractFileType» {
|
||||
public static final «grammar.fileType.simpleName» INSTANCE = new «grammar.fileType.simpleName»()
|
||||
|
||||
new() {
|
||||
super(«grammar.ideaLanguage».INSTANCE)
|
||||
if (isGenerateXtendStub) {
|
||||
fileAccessFactory.createXtendFile(grammar.fileType, '''
|
||||
class «grammar.fileType.simpleName» extends «grammar.abstractFileType» {
|
||||
public static final «grammar.fileType.simpleName» INSTANCE = new «grammar.fileType.simpleName»()
|
||||
|
||||
new() {
|
||||
super(«grammar.ideaLanguage».INSTANCE)
|
||||
}
|
||||
}
|
||||
}
|
||||
''')
|
||||
''')
|
||||
} else {
|
||||
fileAccessFactory.createJavaFile(grammar.fileType, '''
|
||||
public class «grammar.fileType.simpleName» extends «grammar.abstractFileType» {
|
||||
public static final «grammar.fileType.simpleName» INSTANCE = new «grammar.fileType.simpleName»();
|
||||
|
||||
public «grammar.fileType.simpleName»() {
|
||||
super(«grammar.ideaLanguage».INSTANCE);
|
||||
}
|
||||
}
|
||||
''')
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
def compileLanguage(Grammar grammar) {
|
||||
|
@ -422,29 +437,57 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
|
|||
}
|
||||
|
||||
def compileStandaloneSetup(Grammar grammar) {
|
||||
fileAccessFactory.createXtendFile(grammar.ideaStandaloneSetup, '''
|
||||
class «grammar.ideaStandaloneSetup.simpleName» extends «grammar.runtimeGenSetup» {
|
||||
override createInjector() {
|
||||
val runtimeModule = new «grammar.runtimeModule»()
|
||||
val ideaModule = new «grammar.ideaModule»()
|
||||
val mergedModule = «Modules2».mixin(runtimeModule, ideaModule)
|
||||
return «Guice».createInjector(mergedModule)
|
||||
if (isGenerateXtendStub) {
|
||||
fileAccessFactory.createXtendFile(grammar.ideaStandaloneSetup, '''
|
||||
class «grammar.ideaStandaloneSetup.simpleName» extends «grammar.runtimeGenSetup» {
|
||||
override createInjector() {
|
||||
val runtimeModule = new «grammar.runtimeModule»()
|
||||
val ideaModule = new «grammar.ideaModule»()
|
||||
val mergedModule = «Modules2».mixin(runtimeModule, ideaModule)
|
||||
return «Guice».createInjector(mergedModule)
|
||||
}
|
||||
}
|
||||
}
|
||||
''')
|
||||
''')
|
||||
} else {
|
||||
fileAccessFactory.createJavaFile(grammar.ideaStandaloneSetup, '''
|
||||
public class «grammar.ideaStandaloneSetup.simpleName» extends «grammar.runtimeGenSetup» {
|
||||
@Override
|
||||
public «Injector» createInjector() {
|
||||
«grammar.runtimeModule» runtimeModule = new «grammar.runtimeModule»();
|
||||
«grammar.ideaModule» ideaModule = new «grammar.ideaModule»();
|
||||
«Module» mergedModule = «Modules2».mixin(runtimeModule, ideaModule);
|
||||
return «Guice».createInjector(mergedModule);
|
||||
}
|
||||
}
|
||||
''')
|
||||
}
|
||||
}
|
||||
|
||||
def compileIdeaSetup(Grammar grammar) {
|
||||
fileAccessFactory.createXtendFile(grammar.ideaSetup, '''
|
||||
class «grammar.ideaSetup.simpleName» implements «ISetup» {
|
||||
|
||||
override createInjectorAndDoEMFRegistration() {
|
||||
«"org.eclipse.xtext.idea.extensions.EcoreGlobalRegistries".typeRef».ensureInitialized
|
||||
new «grammar.ideaStandaloneSetup»().createInjector
|
||||
if (generateXtendStub) {
|
||||
fileAccessFactory.createXtendFile(grammar.ideaSetup, '''
|
||||
class «grammar.ideaSetup.simpleName» implements «ISetup» {
|
||||
|
||||
override createInjectorAndDoEMFRegistration() {
|
||||
«"org.eclipse.xtext.idea.extensions.EcoreGlobalRegistries".typeRef».ensureInitialized
|
||||
new «grammar.ideaStandaloneSetup»().createInjector
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
''')
|
||||
''')
|
||||
} else {
|
||||
fileAccessFactory.createJavaFile(grammar.ideaSetup, '''
|
||||
public class «grammar.ideaSetup.simpleName» implements «ISetup» {
|
||||
|
||||
@Override
|
||||
public «Injector» createInjectorAndDoEMFRegistration() {
|
||||
«"org.eclipse.xtext.idea.extensions.EcoreGlobalRegistries".typeRef».ensureInitialized();
|
||||
return new «grammar.ideaStandaloneSetup»().createInjector();
|
||||
}
|
||||
|
||||
}
|
||||
''')
|
||||
}
|
||||
}
|
||||
|
||||
def compileElementTypeProvider(Grammar grammar) {
|
||||
|
@ -689,18 +732,35 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
|
|||
}
|
||||
|
||||
def JavaFileAccess compileCompletionContributor(Grammar grammar) {
|
||||
fileAccessFactory.createXtendFile(grammar.completionContributor, '''
|
||||
class «grammar.completionContributor.simpleName» extends «grammar.abstractCompletionContributor» {
|
||||
new() {
|
||||
this(«grammar.ideaLanguage».INSTANCE)
|
||||
if (isGenerateXtendStub) {
|
||||
|
||||
fileAccessFactory.createXtendFile(grammar.completionContributor, '''
|
||||
class «grammar.completionContributor.simpleName» extends «grammar.abstractCompletionContributor» {
|
||||
new() {
|
||||
this(«grammar.ideaLanguage».INSTANCE)
|
||||
}
|
||||
|
||||
new(«"org.eclipse.xtext.idea.lang.AbstractXtextLanguage".typeRef» lang) {
|
||||
super(lang)
|
||||
//custom rules here
|
||||
}
|
||||
}
|
||||
|
||||
new(«"org.eclipse.xtext.idea.lang.AbstractXtextLanguage".typeRef» lang) {
|
||||
super(lang)
|
||||
//custom rules here
|
||||
''')
|
||||
} else {
|
||||
|
||||
fileAccessFactory.createJavaFile(grammar.completionContributor, '''
|
||||
public class «grammar.completionContributor.simpleName» extends «grammar.abstractCompletionContributor» {
|
||||
public «grammar.completionContributor.simpleName»() {
|
||||
this(«grammar.ideaLanguage».INSTANCE);
|
||||
}
|
||||
|
||||
public «grammar.completionContributor.simpleName»(«"org.eclipse.xtext.idea.lang.AbstractXtextLanguage".typeRef» lang) {
|
||||
super(lang);
|
||||
//custom rules here
|
||||
}
|
||||
}
|
||||
}
|
||||
''')
|
||||
''')
|
||||
}
|
||||
}
|
||||
def TextFileAccess compileServicesISetup(Grammar grammar) {
|
||||
fileAccessFactory.createTextFile(
|
||||
|
@ -710,7 +770,11 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
|
|||
}
|
||||
|
||||
def JavaFileAccess compileFacetConfiguration(Grammar grammar) {
|
||||
val file = fileAccessFactory.createXtendFile(grammar.facetConfiguration)
|
||||
val file = if (isGenerateXtendStub) {
|
||||
fileAccessFactory.createXtendFile(grammar.facetConfiguration)
|
||||
} else {
|
||||
fileAccessFactory.createJavaFile(grammar.facetConfiguration)
|
||||
}
|
||||
file.importType("com.intellij.openapi.components.PersistentStateComponent".typeRef)
|
||||
file.importType("com.intellij.openapi.components.State".typeRef)
|
||||
file.importType("com.intellij.openapi.components.Storage".typeRef)
|
||||
|
@ -724,11 +788,18 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
|
|||
file.importType("org.eclipse.xtext.idea.facet.GeneratorConfigurationState".typeRef)
|
||||
}
|
||||
file.content = '''
|
||||
@State(name = "«grammar.name»Generator", storages = #[
|
||||
@Storage(id = "default", file = StoragePathMacros.PROJECT_FILE),
|
||||
@Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR
|
||||
+ "/«grammar.simpleName»GeneratorConfig.xml", scheme = StorageScheme.DIRECTORY_BASED)])
|
||||
class «grammar.facetConfiguration.simpleName» extends «IF grammar.inheritsXbase»XbaseFacetConfiguration implements PersistentStateComponent<XbaseGeneratorConfigurationState>«ELSE»AbstractFacetConfiguration implements PersistentStateComponent<GeneratorConfigurationState>«ENDIF»{
|
||||
«IF isGenerateXtendStub»
|
||||
@State(name = "«grammar.name»Generator", storages = #[
|
||||
@Storage(id = "default", file = StoragePathMacros.PROJECT_FILE),
|
||||
@Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR
|
||||
+ "/«grammar.simpleName»GeneratorConfig.xml", scheme = StorageScheme.DIRECTORY_BASED)])
|
||||
«ELSE»
|
||||
@State(name = "«grammar.name»Generator", storages = {
|
||||
@Storage(id = "default", file = StoragePathMacros.PROJECT_FILE),
|
||||
@Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR
|
||||
+ "/«grammar.simpleName»GeneratorConfig.xml", scheme = StorageScheme.DIRECTORY_BASED)})
|
||||
«ENDIF»
|
||||
«IF !isGenerateXtendStub»public«ENDIF» class «grammar.facetConfiguration.simpleName» extends «IF grammar.inheritsXbase»XbaseFacetConfiguration implements PersistentStateComponent<XbaseGeneratorConfigurationState>«ELSE»AbstractFacetConfiguration implements PersistentStateComponent<GeneratorConfigurationState>«ENDIF»{
|
||||
|
||||
}
|
||||
'''
|
||||
|
@ -767,9 +838,16 @@ class IdeaPluginGenerator extends AbstractXtextGeneratorFragment {
|
|||
}
|
||||
|
||||
def JavaFileAccess compileColorSettingsPage(Grammar grammar) {
|
||||
fileAccessFactory.createXtendFile(grammar.colorSettingsPage, '''
|
||||
class «grammar.colorSettingsPage.simpleName» extends «grammar.baseColorSettingsPage» {
|
||||
}
|
||||
''')
|
||||
if (isGenerateXtendStub) {
|
||||
fileAccessFactory.createXtendFile(grammar.colorSettingsPage, '''
|
||||
class «grammar.colorSettingsPage.simpleName» extends «grammar.baseColorSettingsPage» {
|
||||
}
|
||||
''')
|
||||
} else {
|
||||
fileAccessFactory.createJavaFile(grammar.colorSettingsPage, '''
|
||||
public class «grammar.colorSettingsPage.simpleName» extends «grammar.baseColorSettingsPage» {
|
||||
}
|
||||
''')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,7 +34,12 @@ class RuntimeProjectConfig extends BundleProjectConfig implements IRuntimeProjec
|
|||
val relativePath = ecoreModel.path.substring(root.path.length).replace('\\', '/')
|
||||
return CharMatcher.is('/').trimFrom(relativePath)
|
||||
}
|
||||
throw new RuntimeException('Could not derive the Ecore model folder from the project configuration. Please make sure that \'root\' is a prefix of \'ecoreModel\'.')
|
||||
throw new RuntimeException('''
|
||||
Could not derive the Ecore model folder from the project configuration.
|
||||
Please make sure that \'root\' is a prefix of \'ecoreModel\'.
|
||||
was (root='«root.path»', ecoreModel='«ecoreModel.path»')
|
||||
|
||||
''')
|
||||
}
|
||||
|
||||
override initialize(Injector injector) {
|
||||
|
|
|
@ -24,6 +24,9 @@ class SubProjectConfig implements ISubProjectConfig {
|
|||
@Accessors
|
||||
boolean enabled
|
||||
|
||||
@Accessors
|
||||
boolean overwriteSrc
|
||||
|
||||
@Accessors
|
||||
String name
|
||||
|
||||
|
@ -72,19 +75,19 @@ class SubProjectConfig implements ISubProjectConfig {
|
|||
|
||||
override initialize(Injector injector) {
|
||||
injector.injectMembers(this)
|
||||
if (rootPath !== null) {
|
||||
if (!rootPath.isNullOrEmpty) {
|
||||
root = owner.newFileSystemAccess(rootPath, true)
|
||||
root.initialize(injector)
|
||||
}
|
||||
if (metaInfPath !== null) {
|
||||
if (!metaInfPath.isNullOrEmpty) {
|
||||
metaInf = owner.newFileSystemAccess(metaInfPath, true)
|
||||
metaInf.initialize(injector)
|
||||
}
|
||||
if (srcPath !== null) {
|
||||
src = owner.newFileSystemAccess(srcPath, false)
|
||||
if (!srcPath.isNullOrEmpty) {
|
||||
src = owner.newFileSystemAccess(srcPath, overwriteSrc)
|
||||
src.initialize(injector)
|
||||
}
|
||||
if (srcGenPath !== null) {
|
||||
if (!srcGenPath.isNullOrEmpty) {
|
||||
srcGen = owner.newFileSystemAccess(srcGenPath, true)
|
||||
srcGen.initialize(injector)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,597 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2010 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
module org.eclipse.xtext.GenerateAllTestLanguages2
|
||||
|
||||
import org.eclipse.emf.mwe2.runtime.workflow.Workflow
|
||||
import org.eclipse.emf.mwe.utils.*
|
||||
import org.eclipse.xtext.generator.*
|
||||
|
||||
var projectName = "org.eclipse.xtext.tests"
|
||||
var runtimeProject = "../${projectName}"
|
||||
var ideaProject = "../../intellij/org.eclipse.xtext.core.idea.tests"
|
||||
var lineDelimiter = '\n'
|
||||
|
||||
Workflow {
|
||||
bean = StandaloneSetup {
|
||||
ignoreBrokenProjectFiles = true
|
||||
platformUri = "${runtimeProject}/.."
|
||||
platformUri = "${runtimeProject}/../../plugins"
|
||||
scanClassPath = true
|
||||
uriMap = {
|
||||
from = "platform:/plugin/org.eclipse.emf.ecore/model/Ecore.ecore"
|
||||
to = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore"
|
||||
}
|
||||
uriMap = {
|
||||
from = "platform:/plugin/org.eclipse.emf.ecore/model/Ecore.genmodel"
|
||||
to = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel"
|
||||
}
|
||||
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/grammarinheritance/ametamodel.genmodel"
|
||||
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/generator/ecore/GenModelAccessTest.genmodel"
|
||||
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/generator/ecore/Genmodel.genmodel"
|
||||
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/generator/grammarAccess/ametamodel.genmodel"
|
||||
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/enumrules/enums.genmodel"
|
||||
registerGenModelFile = "platform:/resource/${projectName}/src/org/eclipse/xtext/metamodelreferencing/tests/EcoreReferences.genmodel"
|
||||
registerGenModelFile = "platform:/resource/org.eclipse.xtext/org/eclipse/xtext/Xtext.genmodel"
|
||||
registerGenModelFile = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.genmodel"
|
||||
|
||||
registerGeneratedEPackage = "org.eclipse.xtext.grammarinheritance.ametamodel.AmetamodelPackage"
|
||||
registerGeneratedEPackage = "org.eclipse.xtext.XtextPackage"
|
||||
registerGeneratedEPackage = "org.eclipse.emf.ecore.EcorePackage"
|
||||
}
|
||||
|
||||
bean = ecore.EcoreSupportStandaloneSetup {}
|
||||
component = org.eclipse.emf.mwe2.ecore.EcoreGenerator {
|
||||
genModel = "platform:/resource/org.eclipse.xtext.tests/src/org/eclipse/xtext/generator/ecore/GenModelAccessTest.genmodel"
|
||||
srcPath = "foo"
|
||||
lineDelimiter = lineDelimiter
|
||||
}
|
||||
component = org.eclipse.xtext.generator.ecore.GenModelAccessTestGenerator {}
|
||||
|
||||
component = xtext.generator.XtextGenerator {
|
||||
cleaner = {
|
||||
enabled = false
|
||||
}
|
||||
configuration = xtext.generator.DefaultGeneratorModule {
|
||||
code = {
|
||||
preferXtendStubs = false
|
||||
fileHeader =
|
||||
"/*
|
||||
* generated by Xtext
|
||||
*/"
|
||||
}
|
||||
project = xtext.generator.model.project.StandardProjectConfig {
|
||||
baseName = projectName
|
||||
rootPath = ".."
|
||||
runtime = {
|
||||
enabled = true
|
||||
root = runtimeProject
|
||||
}
|
||||
runtimeTest = {
|
||||
enabled = true
|
||||
root = runtimeProject
|
||||
}
|
||||
ideaPlugin = {
|
||||
enabled = true
|
||||
root = ideaProject
|
||||
overwriteSrc = true
|
||||
}
|
||||
genericIde = {
|
||||
enabled = true
|
||||
root = ideaProject
|
||||
overwriteSrc = true
|
||||
}
|
||||
}
|
||||
}
|
||||
language = TestLanguage {
|
||||
name = "org.eclipse.xtext.generator.ecore.SuperTestLanguage"
|
||||
}
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.generator.ecore.SubTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.XtextGrammarTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// backtrack = true
|
||||
// backtrackLexer = true
|
||||
// memoize = true
|
||||
// }
|
||||
// }
|
||||
// name = "org.eclipse.xtext.lexer.BacktrackingLexerTestLanguage"
|
||||
// }
|
||||
//
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.lexer.IgnoreCaseLexerTestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// ignoreCase = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.lazy.LazyLinkingTestLanguage"
|
||||
// fragment = xtext.generator.junit.Junit4Fragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.Bug287988TestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.Bug289059TestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.Bug313089TestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.ImportUriTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.LangATestLanguage"
|
||||
// fragment = xtext.generator.scoping.ImportNamespacesScopingFragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.Bug362902"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.AbstractIgnoreCaseLinkingTestLanguage"
|
||||
// serializer = {
|
||||
// generateStub = false
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.IgnoreCaseNamespacesTestLanguage"
|
||||
// fragment = xtext.generator.scoping.ImportNamespacesScopingFragment2 {
|
||||
// ignoreCase = true
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.IgnoreCaseImportsTestLanguage"
|
||||
// fragment = adapter.FragmentAdapter {
|
||||
// fragment = scoping.ImportURIScopingFragment {
|
||||
// ignoreCase = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.linking.lazy.Bug311337TestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.dummy.DummyTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.enumrules.EnumRulesTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.enumrules.EnumAndReferenceTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.enumrules.MultiRuleEnumTestLanguage"
|
||||
// }
|
||||
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.generator.ecore.EcoreFragmentTestLanguage"
|
||||
// referencedResource = "platform:/resource/${projectName}/src/org/eclipse/xtext/generator/ecore/Genmodel.genmodel"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.generator.grammarAccess.GrammarAccessTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.grammarinheritance.AbstractTestLanguage"
|
||||
// serializer = {
|
||||
// generateStub = false
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.grammarinheritance.BaseInheritanceTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.grammarinheritance.ConcreteTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.grammarinheritance.InheritanceTestLanguage"
|
||||
// serializer = {
|
||||
// generateStub = false
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.grammarinheritance.InheritanceTest2Language"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.grammarinheritance.InheritanceTest3Language"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.index.IndexTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// referencedResource = "platform:/resource/org.eclipse.emf.ecore/model/Ecore.ecore"
|
||||
// referencedResource = "platform:/resource/${projectName}/src/org/eclipse/xtext/metamodelreferencing/tests/EcorePerNsURI.ecore"
|
||||
// referencedResource = "platform:/resource/${projectName}/src/org/eclipse/xtext/metamodelreferencing/tests/EcorePerPlatformPlugin.ecore"
|
||||
// referencedResource = "platform:/resource/${projectName}/src/org/eclipse/xtext/metamodelreferencing/tests/EcorePerPlatformResource.ecore"
|
||||
// name = "org.eclipse.xtext.metamodelreferencing.tests.EcoreReferenceTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.metamodelreferencing.tests.MetamodelRefTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.metamodelreferencing.tests.MultiGenMMTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.antlr.Bug289515TestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.antlr.Bug289524TestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// backtrack = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.antlr.Bug289524ExTestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// backtrack = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.antlr.Bug296889TestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// backtrack = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.antlr.Bug296889ExTestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// backtrack = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.antlr.Bug299237TestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// ignoreCase = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.antlr.Bug301935TestLanguage"
|
||||
// serializer = {
|
||||
// generateStub = false
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.antlr.Bug378967TestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.antlr.Bug301935ExTestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// ignoreCase = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.antlr.Bug443221TestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.assignments.AssignmentsTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.assignments.Bug287184TestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.assignments.Bug288432TestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.bug419429.Bug419429"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.datatyperules.DatatypeRulesTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.epatch.EpatchTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.fragments.FragmentTestLanguage"
|
||||
// fragment = xtext.generator.junit.Junit4Fragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.fragments.FragmentTestLanguageEx"
|
||||
// fragment = xtext.generator.junit.Junit4Fragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.indentation.IndentationAwareTestLanguage"
|
||||
// serializer = {
|
||||
// generateStub = false
|
||||
// }
|
||||
// fragment = xtext.generator.junit.Junit4Fragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.keywords.KeywordsTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.parameters.ParametersTestLanguage"
|
||||
// fragment = xtext.generator.junit.Junit4Fragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.parameters.TwoParametersTestLanguage"
|
||||
// fragment = xtext.generator.junit.Junit4Fragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.parameters.NoParametersTestLanguage"
|
||||
// fragment = xtext.generator.junit.Junit4Fragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.parameters.ParametersTestLanguageEx"
|
||||
// fragment = xtext.generator.junit.Junit4Fragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.terminalrules.Bug292245TestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.terminalrules.Bug297105TestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// backtrack = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.terminalrules.Bug317840TestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.terminalrules.EcoreTerminalsTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.terminalrules.HiddenTerminalsTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.terminalrules.TerminalRulesTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.terminalrules.UnicodeTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.terminalrules.XtextTerminalsTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.unorderedGroups.UnorderedGroupsTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.unorderedGroups.SimpleUnorderedGroupsTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.unorderedGroups.ExUnorderedGroupsTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.unorderedGroups.BacktrackingBug325745TestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// backtrack = true
|
||||
// }
|
||||
// }
|
||||
// serializer = {
|
||||
// generateStub = false
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.unorderedGroups.SimpleBacktrackingBug325745TestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// backtrack = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.unorderedGroups.ExBacktrackingBug325745TestLanguage"
|
||||
// parserGenerator = {
|
||||
// options = {
|
||||
// backtrack = true
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.formatting2.internal.FormatterTestLanguage"
|
||||
// fragment = xtext.generator.junit.Junit4Fragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.formatting2.regionaccess.internal.RegionAccessTestLanguage"
|
||||
// fragment = xtext.generator.junit.Junit4Fragment2 {}
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.formatter.FormatterTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.formatter.ElementMatcherTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.impl.Bug305397"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.impl.CommentAssociationTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.reconstr.PartialSerializationTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.reconstr.Bug299395TestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.reconstr.ComplexReconstrTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.reconstr.SimpleReconstrTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.reconstr.SerializationBug269362TestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.reconstr.SerializationErrorTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.reconstr.HiddenTokensMergerTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.reconstr.Bug302128TestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.serializer.HiddenTokenSequencerTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.serializer.SequencerTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.serializer.SyntacticSequencerTestLanguage"
|
||||
// serializer = {
|
||||
// generateStub = false
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.serializer.ContextFinderTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.serializer.AssignmentFinderTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.unassignedtext.UnassignedTextTestLanguage"
|
||||
// serializer = {
|
||||
// generateStub = false
|
||||
// }
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parsetree.transientvalues.TransientValuesTest"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.ActionTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.ActionTestLanguage2"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.FowlerDslTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.LookaheadTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.OptionalEmptyTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.PartialParserTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.ReferenceGrammarTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.SimpleExpressionsTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.TestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.TreeTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.valueconverter.Bug250313"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.valueconverter.QualifiedNameTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.xtext.ecoreInference.MultiValueFeatureTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.xtext.ecoreInference.UnassignedRuleCallTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.validation.ConcreteSyntaxValidationTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.resource.EObjectAtOffsetTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.resource.LocationProviderTestLanguage"
|
||||
//
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.resource.LiveContainerTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.resource.LiveContainerBuilderIntegerationTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.resource.Bug385636TestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.parser.encoding.EncodingTestLanguage"
|
||||
// }
|
||||
// language = TestLanguage {
|
||||
// name = "org.eclipse.xtext.testlanguages.indent.IndentationAwareTestLanguage"
|
||||
//
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,69 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2015 itemis AG (http://www.itemis.eu) and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
* http://www.eclipse.org/legal/epl-v10.html
|
||||
*******************************************************************************/
|
||||
package org.eclipse.xtext
|
||||
|
||||
import java.util.ArrayList
|
||||
import org.eclipse.xtext.xtext.generator.XtextGeneratorLanguage
|
||||
import org.eclipse.xtext.xtext.generator.ecore.EMFGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
|
||||
import org.eclipse.xtext.xtext.generator.idea.IdeaPluginGenerator
|
||||
import org.eclipse.xtext.xtext.generator.idea.parser.antlr.XtextAntlrIDEAGeneratorFragment
|
||||
import org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
|
||||
import org.eclipse.xtext.xtext.generator.resourceFactory.ResourceFactoryFragment2
|
||||
import org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
|
||||
import org.eclipse.xtend.lib.annotations.Accessors
|
||||
import org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorComparisonFragment
|
||||
import org.eclipse.xtext.generator.parser.antlr.AntlrOptions
|
||||
|
||||
/**
|
||||
* @author efftinge - Initial contribution and API
|
||||
*/
|
||||
@Accessors
|
||||
class TestLanguage extends XtextGeneratorLanguage {
|
||||
|
||||
GrammarAccessFragment2 grammarAccess = new GrammarAccessFragment2
|
||||
SerializerFragment2 serializer = new SerializerFragment2 => [
|
||||
generateStub = true
|
||||
]
|
||||
ResourceFactoryFragment2 resourceFactoryFragment = new ResourceFactoryFragment2
|
||||
EMFGeneratorFragment2 emfGenerator = new EMFGeneratorFragment2
|
||||
XtextAntlrGeneratorFragment2 parserGenerator = new XtextAntlrGeneratorFragment2 => [
|
||||
debugGrammar = true
|
||||
]
|
||||
XtextAntlrIDEAGeneratorFragment ideaParser = new XtextAntlrIDEAGeneratorFragment
|
||||
|
||||
IdeaPluginGenerator ideaPlugin = new IdeaPluginGenerator
|
||||
|
||||
override protected getImplicitFragments() {
|
||||
val result = new ArrayList(super.getImplicitFragments())
|
||||
result += parserGenerator
|
||||
val comparison = new XtextAntlrGeneratorComparisonFragment
|
||||
comparison.setOptions(new AntlrOptions() => [
|
||||
it.backtrack = parserGenerator.options.backtrack
|
||||
it.backtrackLexer = parserGenerator.options.backtrackLexer
|
||||
it.classSplitting = parserGenerator.options.classSplitting
|
||||
it.casesPerSpecialStateSwitch = parserGenerator.options.casesPerSpecialStateSwitch.toString
|
||||
it.fieldsPerClass = parserGenerator.options.fieldsPerClass.toString
|
||||
it.ignoreCase = parserGenerator.options.ignoreCase
|
||||
it.k = parserGenerator.options.k
|
||||
it.memoize = parserGenerator.options.memoize
|
||||
it.optimizeCodeQuality= parserGenerator.options.optimizeCodeQuality
|
||||
it.skipUnusedRules = parserGenerator.options.skipUnusedRules
|
||||
it.stripAllComments = parserGenerator.options.stripAllComments
|
||||
]);
|
||||
result += comparison
|
||||
result += grammarAccess
|
||||
result += emfGenerator
|
||||
result += serializer
|
||||
result += resourceFactoryFragment
|
||||
result += ideaParser
|
||||
result += ideaPlugin
|
||||
return result
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in a new issue