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: