From 6a5537990ef9becd87d7326294f1c06c9ef04885 Mon Sep 17 00:00:00 2001 From: Sven Efftinge Date: Fri, 13 May 2016 15:59:33 +0200 Subject: [PATCH] [ide server] Added support for #didChangeWatchedFiles() --- .../ide/server/WorkspaceServiceImpl.xtend | 69 ++++++++++++---- .../model/generated/TestLanguage.ecore | 2 +- .../server/AbstractLanguageServerTest.xtend | 65 +++++++++++++++ .../xtext/ide/tests/server/ServerTest.xtend | 74 +++++++----------- .../test-data/test-project/MyType1.testlang | 3 + .../test-data/test-project/MyType2.testlang | 2 + .../tests/testlanguage/TestLanguage.xtextbin | Bin 2238 -> 2238 bytes .../antlr/internal/InternalTestLanguage.g | 8 +- .../internal/InternalTestLanguageParser.java | 8 +- .../antlr/internal/InternalTestLanguage.g | 2 +- .../internal/InternalTestLanguageParser.java | 2 +- .../TestLanguageSemanticSequencer.java | 6 +- .../services/TestLanguageGrammarAccess.java | 16 ++-- .../testLanguage/TypeReference.java | 6 +- .../impl/TestLanguagePackageImpl.java | 2 +- .../testLanguage/impl/TypeReferenceImpl.java | 18 ++--- .../ide/tests/testlanguage/TestLanguage.xtext | 2 +- 17 files changed, 189 insertions(+), 96 deletions(-) create mode 100644 tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/AbstractLanguageServerTest.xtend create mode 100644 tests/org.eclipse.xtext.ide.tests/test-data/test-project/MyType1.testlang create mode 100644 tests/org.eclipse.xtext.ide.tests/test-data/test-project/MyType2.testlang diff --git a/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/WorkspaceServiceImpl.xtend b/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/WorkspaceServiceImpl.xtend index 611d001b4..01ccf5e29 100644 --- a/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/WorkspaceServiceImpl.xtend +++ b/plugins/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/WorkspaceServiceImpl.xtend @@ -11,15 +11,20 @@ import com.google.inject.Inject import com.google.inject.Provider import io.typefox.lsapi.DidChangeConfigurationParams import io.typefox.lsapi.DidChangeWatchedFilesParams +import io.typefox.lsapi.FileEvent import io.typefox.lsapi.InitializeParams import io.typefox.lsapi.WorkspaceService import io.typefox.lsapi.WorkspaceSymbolParams +import java.util.List import org.eclipse.emf.common.util.URI import org.eclipse.xtext.build.BuildRequest import org.eclipse.xtext.build.IncrementalBuilder import org.eclipse.xtext.build.IndexState import org.eclipse.xtext.resource.IResourceServiceProvider import org.eclipse.xtext.resource.XtextResourceSet +import org.eclipse.xtext.resource.impl.ChunkedResourceDescriptions +import org.eclipse.xtext.resource.impl.ProjectDescription +import org.eclipse.xtext.resource.impl.ResourceDescriptionsData import org.eclipse.xtext.validation.Issue /** @@ -30,43 +35,75 @@ class WorkspaceServiceImpl implements WorkspaceService { @Inject protected IncrementalBuilder incrementalBuilder - @Inject - protected IndexState indexState - @Inject protected Provider resourceSetProvider @Inject protected IResourceServiceProvider.Registry languagesRegistry + protected IndexState indexState = new IndexState + @Inject IFileSystemScanner fileSystemScanner + URI baseDir + + (URI, Iterable)=>void issueAcceptor + public def void initialize(InitializeParams params, (URI, Iterable)=>void acceptor) { val uris = newArrayList + this.baseDir = URI.createFileURI(params.rootPath) + this.issueAcceptor = acceptor fileSystemScanner.scan(URI.createFileURI(params.rootPath)) [uris += it] - incrementalBuilder.build(new BuildRequest => [ - it.baseDir = URI.createFileURI(params.rootPath) - it.resourceSet = resourceSetProvider.get - dirtyFiles = uris - afterValidate = [ uri, issues| - if (!issues.empty) - acceptor.apply(uri, issues) - return true - ] - ],[languagesRegistry.getResourceServiceProvider(it)]) + val result = incrementalBuilder.build(newBuildRequest(uris, emptyList),[languagesRegistry.getResourceServiceProvider(it)]) + indexState = result.indexState } - override didChangeConfiguraton(DidChangeConfigurationParams param) { throw new UnsupportedOperationException("TODO: auto-generated method stub") } - override didChangeWatchedFiles(DidChangeWatchedFilesParams param) { - throw new UnsupportedOperationException("TODO: auto-generated method stub") + override didChangeWatchedFiles(DidChangeWatchedFilesParams fileChanges) { + val dirtyFiles = newArrayList + val deletedFiles = newArrayList + for (fileEvent : fileChanges.changes) { + if (fileEvent.type === FileEvent.TYPE_DELETED) { + deletedFiles += URI.createFileURI(fileEvent.uri) + } else { + dirtyFiles += URI.createFileURI(fileEvent.uri) + } + } + val result = incrementalBuilder.build(newBuildRequest(dirtyFiles, deletedFiles),[languagesRegistry.getResourceServiceProvider(it)]) + indexState = result.indexState } override symbol(WorkspaceSymbolParams param) { throw new UnsupportedOperationException("TODO: auto-generated method stub") } + protected def BuildRequest newBuildRequest(List changedFiles, List deletedFiles) { + new BuildRequest => [ + it.baseDir = baseDir + it.resourceSet = createFreshResourceSet(new ResourceDescriptionsData(emptyList)) + it.state = new IndexState(indexState.resourceDescriptions.copy, indexState.fileMappings.copy) + it.resourceSet = createFreshResourceSet(state.resourceDescriptions) + it. dirtyFiles = changedFiles + it.deletedFiles = deletedFiles + afterValidate = [ uri, issues| + issueAcceptor.apply(uri, issues) + return true + ] + ] + } + + protected def XtextResourceSet createFreshResourceSet(ResourceDescriptionsData newIndex) { + resourceSetProvider.get => [ + val projectDescription = new ProjectDescription => [ + name = 'test-project' + ] + projectDescription.attachToEmfObject(it) + val index = new ChunkedResourceDescriptions(emptyMap, it) + index.setContainer(projectDescription.name, newIndex) + ] + } + } \ No newline at end of file diff --git a/tests/org.eclipse.xtext.ide.tests/model/generated/TestLanguage.ecore b/tests/org.eclipse.xtext.ide.tests/model/generated/TestLanguage.ecore index a0dd043a5..39382a83f 100644 --- a/tests/org.eclipse.xtext.ide.tests/model/generated/TestLanguage.ecore +++ b/tests/org.eclipse.xtext.ide.tests/model/generated/TestLanguage.ecore @@ -20,7 +20,7 @@ upperBound="-1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> - + diff --git a/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/AbstractLanguageServerTest.xtend b/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/AbstractLanguageServerTest.xtend new file mode 100644 index 000000000..4ad7e83f6 --- /dev/null +++ b/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/AbstractLanguageServerTest.xtend @@ -0,0 +1,65 @@ +/******************************************************************************* + * Copyright (c) 2016 TypeFox GmbH (http://www.typefox.io) 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.ide.tests.server + +import com.google.inject.Guice +import com.google.inject.Inject +import io.typefox.lsapi.Diagnostic +import io.typefox.lsapi.NotificationCallback +import io.typefox.lsapi.PublishDiagnosticsParams +import java.io.File +import java.io.FileWriter +import java.util.List +import java.util.Map +import org.eclipse.xtext.ide.server.LanguageServerImpl +import org.eclipse.xtext.ide.server.ServerModule +import org.eclipse.xtext.util.Files +import org.junit.Before + +/** + * @author efftinge - Initial contribution and API + */ +class AbstractLanguageServerTest implements NotificationCallback { + + @Before + def void setup() { + val injector = Guice.createInjector(new ServerModule()) + injector.injectMembers(this) + // register notification callbacks + languageServer.getTextDocumentService.onPublishDiagnostics(this) + + // create workingdir + root = new File("./test-data/test-project") + if (!root.mkdirs) { + Files.cleanFolder(root, null, true, false) + } + root.deleteOnExit + } + + @Inject + protected LanguageServerImpl languageServer + protected Map> diagnostics = newHashMap() + + protected File root + + def String ->(String path, CharSequence contents) { + val file = new File(root, path) + file.parentFile.mkdirs + file.createNewFile + new FileWriter(file) => [ + write(contents.toString) + close + ] + return file.absolutePath + } + + override onNotification(PublishDiagnosticsParams t) { + diagnostics.put(t.uri, t.diagnostics) + } + +} \ No newline at end of file diff --git a/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerTest.xtend b/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerTest.xtend index 7707cd4b4..8cc0139e9 100644 --- a/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerTest.xtend +++ b/tests/org.eclipse.xtext.ide.tests/src/org/eclipse/xtext/ide/tests/server/ServerTest.xtend @@ -7,21 +7,14 @@ *******************************************************************************/ package org.eclipse.xtext.ide.tests.server -import com.google.inject.Guice import com.google.inject.Inject +import io.typefox.lsapi.DidChangeWatchedFilesParamsImpl +import io.typefox.lsapi.FileEvent +import io.typefox.lsapi.FileEventImpl import io.typefox.lsapi.InitializeParamsImpl -import io.typefox.lsapi.NotificationCallback -import io.typefox.lsapi.PublishDiagnosticsParams -import java.io.File -import java.io.FileWriter -import java.util.List -import org.eclipse.xtend.lib.annotations.Accessors -import org.eclipse.xtext.ide.server.LanguageServerImpl -import org.eclipse.xtext.ide.server.ServerModule import org.eclipse.xtext.ide.tests.testlanguage.TestLanguageStandaloneSetup import org.eclipse.xtext.resource.FileExtensionProvider import org.eclipse.xtext.resource.IResourceServiceProvider -import org.junit.Before import org.junit.Test import static org.junit.Assert.* @@ -29,21 +22,13 @@ import static org.junit.Assert.* /** * @author Sven Efftinge - Initial contribution and API */ -class ServerTest implements NotificationCallback { - - @Before - def void setup() { - val injector = Guice.createInjector(new ServerModule()) - injector.injectMembers(this) - } +class ServerTest extends AbstractLanguageServerTest { @Inject def voidRegisterTestLanguage(IResourceServiceProvider.Registry registry) { val injector = new TestLanguageStandaloneSetup().createInjectorAndDoEMFRegistration registry.extensionToFactoryMap.put(injector.getInstance(FileExtensionProvider).primaryFileExtension, injector.getInstance(IResourceServiceProvider)) } - @Inject LanguageServerImpl languageServer - @Test def void testInitializeBuild() { 'MyType1.testlang' -> ''' @@ -51,11 +36,10 @@ class ServerTest implements NotificationCallback { string foo } ''' - languageServer.getTextDocumentService.onPublishDiagnostics(this) languageServer.initialize(new InitializeParamsImpl => [ rootPath = root.absolutePath ]) - assertTrue(diagnosticNotifications.join(','), diagnosticNotifications.isEmpty) + assertTrue(diagnostics.entrySet.join(','), diagnostics.values.head.empty) } @Test @@ -65,34 +49,36 @@ class ServerTest implements NotificationCallback { NonExisting foo } ''' - languageServer.getTextDocumentService.onPublishDiagnostics(this) languageServer.initialize(new InitializeParamsImpl => [ rootPath = root.absolutePath ]) - assertEquals("Couldn't resolve reference to Type 'NonExisting'.", diagnosticNotifications.head.diagnostics.head.message) + assertEquals("Couldn't resolve reference to TypeDeclaration 'NonExisting'.", diagnostics.values.head.head?.message) } - - // utilities - val File root = new File("./test-data/test-project") => [ - mkdirs - deleteOnExit - ] - - def void ->(String path, CharSequence contents) { - val file = new File(root, path) - file.parentFile.mkdirs - file.createNewFile - new FileWriter(file) => [ - write(contents.toString) - close - ] - } - - List diagnosticNotifications = newArrayList() - - override onNotification(PublishDiagnosticsParams t) { - diagnosticNotifications += t + @Test + def void testIncrementalBuildWithError() { + 'MyType1.testlang' -> ''' + type Test { + NonExisting foo + } + ''' + languageServer.initialize(new InitializeParamsImpl => [ + rootPath = root.absolutePath + ]) + assertEquals("Couldn't resolve reference to TypeDeclaration 'NonExisting'.", diagnostics.values.head.head.message) + + val path = 'MyType2.testlang' -> ''' + type NonExisting { + } + ''' + languageServer.getWorkspaceService.didChangeWatchedFiles(new DidChangeWatchedFilesParamsImpl => [ + changes = newArrayList(new FileEventImpl => [ + uri = path + type = FileEvent.TYPE_CREATED + ]) + ]) + assertNotNull(diagnostics.get(path)) + assertTrue(diagnostics.values.join(','), diagnostics.values.forall[empty]) } } \ No newline at end of file diff --git a/tests/org.eclipse.xtext.ide.tests/test-data/test-project/MyType1.testlang b/tests/org.eclipse.xtext.ide.tests/test-data/test-project/MyType1.testlang new file mode 100644 index 000000000..cb4f04c37 --- /dev/null +++ b/tests/org.eclipse.xtext.ide.tests/test-data/test-project/MyType1.testlang @@ -0,0 +1,3 @@ +type Test { + NonExisting foo +} diff --git a/tests/org.eclipse.xtext.ide.tests/test-data/test-project/MyType2.testlang b/tests/org.eclipse.xtext.ide.tests/test-data/test-project/MyType2.testlang new file mode 100644 index 000000000..7c81455ae --- /dev/null +++ b/tests/org.eclipse.xtext.ide.tests/test-data/test-project/MyType2.testlang @@ -0,0 +1,2 @@ +type NonExisting { +} diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/TestLanguage.xtextbin b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/TestLanguage.xtextbin index 4406397d5e7c1a0bd6a219e3e3f5cad8f8a0dd9b..a2363a08256fb031a2592a39f450208492a04fc4 100644 GIT binary patch delta 13 VcmdldxKD7yA$G=u$%om00{|yT1pby diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/ide/contentassist/antlr/internal/InternalTestLanguage.g b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/ide/contentassist/antlr/internal/InternalTestLanguage.g index 09d20231e..027de1e62 100644 --- a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/ide/contentassist/antlr/internal/InternalTestLanguage.g +++ b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/ide/contentassist/antlr/internal/InternalTestLanguage.g @@ -648,13 +648,13 @@ rule__TypeReference__TypeRefAssignment } : ( - { before(grammarAccess.getTypeReferenceAccess().getTypeRefTypeCrossReference_0()); } + { before(grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationCrossReference_0()); } ( - { before(grammarAccess.getTypeReferenceAccess().getTypeRefTypeIDTerminalRuleCall_0_1()); } + { before(grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationIDTerminalRuleCall_0_1()); } RULE_ID - { after(grammarAccess.getTypeReferenceAccess().getTypeRefTypeIDTerminalRuleCall_0_1()); } + { after(grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationIDTerminalRuleCall_0_1()); } ) - { after(grammarAccess.getTypeReferenceAccess().getTypeRefTypeCrossReference_0()); } + { after(grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationCrossReference_0()); } ) ; finally { diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/ide/contentassist/antlr/internal/InternalTestLanguageParser.java b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/ide/contentassist/antlr/internal/InternalTestLanguageParser.java index 1b0a4041d..384b32ac2 100644 --- a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/ide/contentassist/antlr/internal/InternalTestLanguageParser.java +++ b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/ide/contentassist/antlr/internal/InternalTestLanguageParser.java @@ -1896,17 +1896,17 @@ public class InternalTestLanguageParser extends AbstractInternalContentAssistPar // InternalTestLanguage.g:650:2: ( ( RULE_ID ) ) // InternalTestLanguage.g:651:3: ( RULE_ID ) { - before(grammarAccess.getTypeReferenceAccess().getTypeRefTypeCrossReference_0()); + before(grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationCrossReference_0()); // InternalTestLanguage.g:652:3: ( RULE_ID ) // InternalTestLanguage.g:653:4: RULE_ID { - before(grammarAccess.getTypeReferenceAccess().getTypeRefTypeIDTerminalRuleCall_0_1()); + before(grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationIDTerminalRuleCall_0_1()); match(input,RULE_ID,FOLLOW_2); - after(grammarAccess.getTypeReferenceAccess().getTypeRefTypeIDTerminalRuleCall_0_1()); + after(grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationIDTerminalRuleCall_0_1()); } - after(grammarAccess.getTypeReferenceAccess().getTypeRefTypeCrossReference_0()); + after(grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationCrossReference_0()); } diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/parser/antlr/internal/InternalTestLanguage.g b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/parser/antlr/internal/InternalTestLanguage.g index 8571bb450..7b16b9a7b 100644 --- a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/parser/antlr/internal/InternalTestLanguage.g +++ b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/parser/antlr/internal/InternalTestLanguage.g @@ -306,7 +306,7 @@ ruleTypeReference returns [EObject current=null] } otherlv_0=RULE_ID { - newLeafNode(otherlv_0, grammarAccess.getTypeReferenceAccess().getTypeRefTypeCrossReference_0()); + newLeafNode(otherlv_0, grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationCrossReference_0()); } ) ) diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/parser/antlr/internal/InternalTestLanguageParser.java b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/parser/antlr/internal/InternalTestLanguageParser.java index e293f3ef5..3824dd0a1 100644 --- a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/parser/antlr/internal/InternalTestLanguageParser.java +++ b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/parser/antlr/internal/InternalTestLanguageParser.java @@ -748,7 +748,7 @@ public class InternalTestLanguageParser extends AbstractInternalAntlrParser { otherlv_0=(Token)match(input,RULE_ID,FOLLOW_2); - newLeafNode(otherlv_0, grammarAccess.getTypeReferenceAccess().getTypeRefTypeCrossReference_0()); + newLeafNode(otherlv_0, grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationCrossReference_0()); } diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/serializer/TestLanguageSemanticSequencer.java b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/serializer/TestLanguageSemanticSequencer.java index e339db6cf..d0c6342b1 100644 --- a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/serializer/TestLanguageSemanticSequencer.java +++ b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/serializer/TestLanguageSemanticSequencer.java @@ -148,7 +148,7 @@ public class TestLanguageSemanticSequencer extends AbstractDelegatingSemanticSeq * TypeReference returns TypeReference * * Constraint: - * typeRef=[Type|ID] + * typeRef=[TypeDeclaration|ID] */ protected void sequence_TypeReference(ISerializationContext context, TypeReference semanticObject) { if (errorAcceptor != null) { @@ -156,7 +156,7 @@ public class TestLanguageSemanticSequencer extends AbstractDelegatingSemanticSeq errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, TestLanguagePackage.Literals.TYPE_REFERENCE__TYPE_REF)); } SequenceFeeder feeder = createSequencerFeeder(context, semanticObject); - feeder.accept(grammarAccess.getTypeReferenceAccess().getTypeRefTypeIDTerminalRuleCall_0_1(), semanticObject.getTypeRef()); + feeder.accept(grammarAccess.getTypeReferenceAccess().getTypeRefTypeDeclarationIDTerminalRuleCall_0_1(), semanticObject.getTypeRef()); feeder.finish(); } @@ -166,7 +166,7 @@ public class TestLanguageSemanticSequencer extends AbstractDelegatingSemanticSeq * Type returns TypeReference * * Constraint: - * (typeRef=[Type|ID] arrayDiemensions+='['*) + * (typeRef=[TypeDeclaration|ID] arrayDiemensions+='['*) */ protected void sequence_Type_TypeReference(ISerializationContext context, TypeReference semanticObject) { genericSequencer.createSequence(context, semanticObject); diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/services/TestLanguageGrammarAccess.java b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/services/TestLanguageGrammarAccess.java index c6ec8c07f..966fe6c5f 100644 --- a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/services/TestLanguageGrammarAccess.java +++ b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/services/TestLanguageGrammarAccess.java @@ -152,21 +152,21 @@ public class TestLanguageGrammarAccess extends AbstractGrammarElementFinder { public class TypeReferenceElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.xtext.ide.tests.testlanguage.TestLanguage.TypeReference"); private final Assignment cTypeRefAssignment = (Assignment)rule.eContents().get(1); - private final CrossReference cTypeRefTypeCrossReference_0 = (CrossReference)cTypeRefAssignment.eContents().get(0); - private final RuleCall cTypeRefTypeIDTerminalRuleCall_0_1 = (RuleCall)cTypeRefTypeCrossReference_0.eContents().get(1); + private final CrossReference cTypeRefTypeDeclarationCrossReference_0 = (CrossReference)cTypeRefAssignment.eContents().get(0); + private final RuleCall cTypeRefTypeDeclarationIDTerminalRuleCall_0_1 = (RuleCall)cTypeRefTypeDeclarationCrossReference_0.eContents().get(1); //TypeReference: - // typeRef=[Type]; + // typeRef=[TypeDeclaration]; @Override public ParserRule getRule() { return rule; } - //typeRef=[Type] + //typeRef=[TypeDeclaration] public Assignment getTypeRefAssignment() { return cTypeRefAssignment; } - //[Type] - public CrossReference getTypeRefTypeCrossReference_0() { return cTypeRefTypeCrossReference_0; } + //[TypeDeclaration] + public CrossReference getTypeRefTypeDeclarationCrossReference_0() { return cTypeRefTypeDeclarationCrossReference_0; } //ID - public RuleCall getTypeRefTypeIDTerminalRuleCall_0_1() { return cTypeRefTypeIDTerminalRuleCall_0_1; } + public RuleCall getTypeRefTypeDeclarationIDTerminalRuleCall_0_1() { return cTypeRefTypeDeclarationIDTerminalRuleCall_0_1; } } public class PrimitiveTypeElements extends AbstractParserRuleElementFinder { private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.xtext.ide.tests.testlanguage.TestLanguage.PrimitiveType"); @@ -291,7 +291,7 @@ public class TestLanguageGrammarAccess extends AbstractGrammarElementFinder { } //TypeReference: - // typeRef=[Type]; + // typeRef=[TypeDeclaration]; public TypeReferenceElements getTypeReferenceAccess() { return pTypeReference; } diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/TypeReference.java b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/TypeReference.java index fba173a43..740f31f82 100644 --- a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/TypeReference.java +++ b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/TypeReference.java @@ -35,12 +35,12 @@ public interface TypeReference extends Type *

* * @return the value of the 'Type Ref' reference. - * @see #setTypeRef(Type) + * @see #setTypeRef(TypeDeclaration) * @see org.eclipse.xtext.ide.tests.testlanguage.testLanguage.TestLanguagePackage#getTypeReference_TypeRef() * @model * @generated */ - Type getTypeRef(); + TypeDeclaration getTypeRef(); /** * Sets the value of the '{@link org.eclipse.xtext.ide.tests.testlanguage.testLanguage.TypeReference#getTypeRef Type Ref}' reference. @@ -50,6 +50,6 @@ public interface TypeReference extends Type * @see #getTypeRef() * @generated */ - void setTypeRef(Type value); + void setTypeRef(TypeDeclaration value); } // TypeReference diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/impl/TestLanguagePackageImpl.java b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/impl/TestLanguagePackageImpl.java index 7f767c9a3..c9803c557 100644 --- a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/impl/TestLanguagePackageImpl.java +++ b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/impl/TestLanguagePackageImpl.java @@ -375,7 +375,7 @@ public class TestLanguagePackageImpl extends EPackageImpl implements TestLanguag initEAttribute(getType_ArrayDiemensions(), ecorePackage.getEString(), "arrayDiemensions", null, 0, -1, Type.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(typeReferenceEClass, TypeReference.class, "TypeReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEReference(getTypeReference_TypeRef(), this.getType(), null, "typeRef", null, 0, 1, TypeReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getTypeReference_TypeRef(), this.getTypeDeclaration(), null, "typeRef", null, 0, 1, TypeReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(primitiveTypeEClass, PrimitiveType.class, "PrimitiveType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEAttribute(getPrimitiveType_Name(), ecorePackage.getEString(), "name", null, 0, 1, PrimitiveType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/impl/TypeReferenceImpl.java b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/impl/TypeReferenceImpl.java index b00e07e19..1ea1adcd0 100644 --- a/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/impl/TypeReferenceImpl.java +++ b/tests/org.eclipse.xtext.ide.tests/testlang-src-gen/org/eclipse/xtext/ide/tests/testlanguage/testLanguage/impl/TypeReferenceImpl.java @@ -15,7 +15,7 @@ import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.impl.ENotificationImpl; import org.eclipse.xtext.ide.tests.testlanguage.testLanguage.TestLanguagePackage; -import org.eclipse.xtext.ide.tests.testlanguage.testLanguage.Type; +import org.eclipse.xtext.ide.tests.testlanguage.testLanguage.TypeDeclaration; import org.eclipse.xtext.ide.tests.testlanguage.testLanguage.TypeReference; /** @@ -41,7 +41,7 @@ public class TypeReferenceImpl extends TypeImpl implements TypeReference * @generated * @ordered */ - protected Type typeRef; + protected TypeDeclaration typeRef; /** * @@ -69,12 +69,12 @@ public class TypeReferenceImpl extends TypeImpl implements TypeReference * * @generated */ - public Type getTypeRef() + public TypeDeclaration getTypeRef() { if (typeRef != null && typeRef.eIsProxy()) { InternalEObject oldTypeRef = (InternalEObject)typeRef; - typeRef = (Type)eResolveProxy(oldTypeRef); + typeRef = (TypeDeclaration)eResolveProxy(oldTypeRef); if (typeRef != oldTypeRef) { if (eNotificationRequired()) @@ -89,7 +89,7 @@ public class TypeReferenceImpl extends TypeImpl implements TypeReference * * @generated */ - public Type basicGetTypeRef() + public TypeDeclaration basicGetTypeRef() { return typeRef; } @@ -99,9 +99,9 @@ public class TypeReferenceImpl extends TypeImpl implements TypeReference * * @generated */ - public void setTypeRef(Type newTypeRef) + public void setTypeRef(TypeDeclaration newTypeRef) { - Type oldTypeRef = typeRef; + TypeDeclaration oldTypeRef = typeRef; typeRef = newTypeRef; if (eNotificationRequired()) eNotify(new ENotificationImpl(this, Notification.SET, TestLanguagePackage.TYPE_REFERENCE__TYPE_REF, oldTypeRef, typeRef)); @@ -135,7 +135,7 @@ public class TypeReferenceImpl extends TypeImpl implements TypeReference switch (featureID) { case TestLanguagePackage.TYPE_REFERENCE__TYPE_REF: - setTypeRef((Type)newValue); + setTypeRef((TypeDeclaration)newValue); return; } super.eSet(featureID, newValue); @@ -152,7 +152,7 @@ public class TypeReferenceImpl extends TypeImpl implements TypeReference switch (featureID) { case TestLanguagePackage.TYPE_REFERENCE__TYPE_REF: - setTypeRef((Type)null); + setTypeRef((TypeDeclaration)null); return; } super.eUnset(featureID); diff --git a/tests/org.eclipse.xtext.ide.tests/testlang-src/org/eclipse/xtext/ide/tests/testlanguage/TestLanguage.xtext b/tests/org.eclipse.xtext.ide.tests/testlang-src/org/eclipse/xtext/ide/tests/testlanguage/TestLanguage.xtext index bb4fc38ad..c007c72cc 100644 --- a/tests/org.eclipse.xtext.ide.tests/testlang-src/org/eclipse/xtext/ide/tests/testlanguage/TestLanguage.xtext +++ b/tests/org.eclipse.xtext.ide.tests/testlang-src/org/eclipse/xtext/ide/tests/testlanguage/TestLanguage.xtext @@ -27,7 +27,7 @@ Type : ; TypeReference: - typeRef=[Type] + typeRef=[TypeDeclaration] ; PrimitiveType: