Giter VIP home page Giter VIP logo

xtext's Introduction

Gitter Eclipse Chat

Eclipse Xtext™

Eclipse Xtext is a framework for the development of programming languages and domain-specific languages. It covers all aspects of a complete language infrastructure, from parser, over linker, compiler, or interpreter to fully-blown top-notch IDE integration for Eclipse and Web-based IDEs. Further, languages developed with Xtext can be integrated into editors supporting the Language Server Protocol (e.g. VS Code, Eclipse Che). Xtext comes with great defaults for all the necessary services. At the same time these can be easily tailored to your individual needs.

More information can be found on xtext.org.

Quick Access

Developer Resources

  • Contributing: report bugs, setup your workspace, submit your changes, etc.
  • Quality Guidelines: how to craft high-quality code changes, commits and pull-requests.
  • Builds: details about the build infrastructure and release process.

xtext's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xtext's Issues

With java 8: #[1 .. 2].forEach[int i | ] generates a bogus java code.

class MyGen{
	def x1() {
		#[1 .. 2].forEach[int i | ]
		#["Hello"].forEach[int i | ]
	}	
}

results in

public class MyGen {
  public void x1() {
    IntegerRange _upTo = new IntegerRange(1, 2);
    final Consumer<Integer> _function = new Consumer<Integer>() {
      public void accept(final Integer i) {
      }
    };
    Collections.<IntegerRange>unmodifiableList(CollectionLiterals.<IntegerRange>newArrayList(_upTo)).forEach(_function);
    final Consumer<Integer> _function_1 = new Consumer<Integer>() {
      public void accept(final Integer i) {
      }
    };
    Collections.<String>unmodifiableList(CollectionLiterals.<String>newArrayList("Hello")).forEach(_function_1);
  }
}

Create repository xtext-vscode

The Xtext repository has been split up into several repositories. One of the main reasons is to keep projects for different IDEs (Eclipse,IDEA,Web) apart from each other.

With availabilty of the Language Server Protocol Microsoft's Visual Studio Code has become a target with which Xtext integrates. It is worth to have first-class support from the Xtext framework for this tool.

Primary goal of such a repository should be to provide VS Code extensions for languages by Xtext itself (like Xtext Grammar or for the common example projects), and framework extensions to produce these extensions. There are currently two examples available which both show how such extensions are implemented:

Both implementations have several things in common, and for further languages this can be abstracted further. As a first use case a generator fragment for the Xtext code generator could be provided, which produces the VS Code extension code for a given grammar.

As a first contribution to the Xtext VS Code codebase there is such a generator fragment available in the following repository:

With availabilty of the proposed xtext-vscode repository we want to contribute this project to the Xtext project within Xtext's namespace.

Performance bottleneck in QueuedBuildData when building huge number of resources

I ran into a performance issue when I was trying to build more than 500k very simple and small resources in my workspace. My workspace contains 256 projects, each project contains 256 folders and the resources are balanced into these folders. Although I managed to perform a full clean build, I experienced some performance loss in the QueuedBuildData#queueURI(URI) method.

Although the collections in the QueuedBuildData should not contain duplicates it is currently implemented with LinkedList to comply the Queue API. To avoid duplicate resource URIs, contains is being called on these LinkedLists which is pretty expensive in my case. Actually, that is the 20% of my overall build process.

I would recommend to implement some sort of factory and inject it into the QueuedBuildData. This factory will be responsible for creating the collection instances for uris and the values of the projectNameToChangedResource field as well. By default, a LinkedList instances will be created. But, via injection, one could inject a factory that creates LinkedHashSet instances. Since the iteration order of the LinkedHashSet equals to the insertion order, it can be wrapped into an AbstractQueue and can act as a queue.

I believe this neither a bug nor a critical feature request, but it could be useful for others as well.

By the way, I am happy to contribute a patch.

Re-using existing lexer hardly possible with 'AbstractAntlrGrammarGenerator'

Skipping the generation of a separate lexer grammar is hardly possible without copy&pasting
AbstractAntlrGrammarGenerator.generate(...).

In my scenario an additional highlighting parser is generated with 'non-combined grammars' setting. It shall re-use the production lexer.

Hence, an additional method hook like

protected def needCompilerLexer() {
    return isCombinedGrammar
}

would be helpful.

Validation Jobs on Readonly Editors

ValidatingEditorCallback does not schedule validation jobs on read-only editors but org.eclipse.xtext.ui.editor.model.XtextDocumentProvider.registerAnnotationInfoProcessor(ElementInfo) does. is this a indended behaviour? or a bug?

Maven publishing validation fails

  • All generated pom.xml must have a project name and description (at least inferred from parent).
  • Signature file .asc does not exist for org.eclipse.xtext.maven.parent pom.xml.

[formatter2] ITextRegionAccess differs when created via node model / serializer

Problem description

I have a grammar where the ITextRegionAccess differs when it is created via the node model compared to when it is created via serializer. The effect is that the formatting does not work as expected in the editor and my tests are failing when useNodeModel is enabled in the FormatterTestRequest. Formatting without a node model works as expected (e.g. when creating instances in memory and serializing them).

Example

I prepared a minimal example here:
https://github.com/franzbecker/xtext-formatter-problem

The grammar is quite simple:

grammar org.xtext.example.mydsl.MyDsl with org.eclipse.xtext.common.Terminals

generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"

Model:
	entries+=ListEntry*;

ListEntry:
	{ListEntry}
	'-' contents+=TextContent* contents+=Punctuation?;

EntryContent:
	TextContent | Punctuation;

TextContent:
	value=ID;

Punctuation:
	value=('.' | '?');

And allows creating valid models such as:

- hello world
- hello xtext.

Formatting this fails in the editor (and the test):

	@Test
	def void formatEntry() {
		assertFormatted [
			expectation = '''
				- a simple entry.
			'''
			toBeFormatted = '''
				-    a   simple   entry   .
			'''
		]
	}

Fails at org.eclipse.xtext.junit4.formatter.FormatterTester.createRegionAccess(XtextResource, FormatterTestRequest):

	protected ITextRegionAccess createRegionAccess(XtextResource resource, FormatterTestRequest req) {
		boolean useSerializer = req.isUseSerializer() && !req.isAllowSyntaxErrors();
		if (req.isUseNodeModel() && useSerializer) {
			ITextRegionAccess nmRegions = createRegionAccessViaNodeModel(resource);
			ITextRegionAccess serRegions = createRegionAccessViaSerializer(resource);
			String nmString = toString(nmRegions);
			String serString = toString(serRegions);
			Assert.assertEquals(nmString, serString);

textregionaccess

When I set useNodeModel = false in the formatter request it works as expected. When I set useSerializer = false the test fails as it is not formatted properly.

In the formatter I used the following to remove spaces before the punctuation:

	def dispatch void format(Punctuation content, extension IFormattableDocument document) {
		content.regionFor.feature(ENTRY_CONTENT__VALUE).prepend[noSpace]
	}

I observed that the ISemanticRegion is null in case the node model is used.
If I try to obtain the node from the node model at this point using NodeModelUtils.findNodesForFeature(content, ENTRY_CONTENT__VALUE)
a LeafNode is returned with the proper text.

Looks like a bug to me.

Single-file Compare: "Show Whitespace" doesn't work in right pane

With current Xtext master:

  1. Open any changed DSL model file (e.g. xtend) in a connected EGit repository, right-click and select Compare With -> HEAD revision (or any other item from the Compare With menu with a single-file selection).
  2. Enable "Show Whitespace Characters" if is isn't already turned on.

Then, the whitespace markers will be displayed in the left pane, but not in the right pane.
This does not happen when selecting two files and executing Compare With -> Each other.

Xtend editor locked on save

In a workspace containing many java and xtend sources (also containing several xcore models and an xsemantics file), I hit CMD-S in an xtend editor while an incremental build was running in the background. This locked the editor (Mac OS spinning pinwheel showed up + Eclipse dialog saying "Waiting for ...").

Here's the jstack output:

$ jstack 3455
2016-09-28 13:33:01
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.101-b13 mixed mode):

"Attach Listener" eclipse/xtext-eclipse#309 daemon prio=9 os_prio=31 tid=0x0000000106121800 nid=0x1775f waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"pool-5-thread-4" eclipse/xtext-eclipse#206 prio=5 os_prio=31 tid=0x0000000127dff800 nid=0xa45f waiting on condition [0x000070000531e000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000006c916ba80> (a java.util.concurrent.SynchronousQueue$TransferStack)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
    at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

"pool-5-thread-1" eclipse/xtext-eclipse#110 prio=5 os_prio=31 tid=0x0000000102bc0800 nid=0xb53b waiting on condition [0x0000700004e89000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000006c916ba80> (a java.util.concurrent.SynchronousQueue$TransferStack)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
    at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1066)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

"ParallelGenerator-3" eclipse/xtext-eclipse#78 prio=5 os_prio=31 tid=0x0000000105b76000 nid=0xa60f waiting on condition [0x0000700004d86000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000006cc180d58> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

"ParallelGenerator-2" eclipse/xtext-eclipse#77 prio=5 os_prio=31 tid=0x0000000102c39800 nid=0xa513 waiting on condition [0x0000700002402000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000006cc180d58> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

"ParallelGenerator-1" eclipse/xtext-eclipse#76 prio=5 os_prio=31 tid=0x0000000102c09800 nid=0x3b2f waiting on condition [0x0000700000216000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000006cc180d58> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

"ParallelGenerator-0" eclipse/xtext-eclipse#75 prio=5 os_prio=31 tid=0x0000000102fcd800 nid=0x12e1f waiting on condition [0x0000700000113000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000006cc180d58> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

"[ThreadPool Manager] - Idle Thread" eclipse/xtext-eclipse#63 daemon prio=5 os_prio=31 tid=0x0000000127820000 nid=0xd117 in Object.wait() [0x0000700004c83000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor.run(Executor.java:106)
    - locked <0x00000006c2480020> (a org.eclipse.equinox.internal.util.impl.tpt.threadpool.Executor)

"com.google.inject.internal.util.$Finalizer" eclipse/xtext#2402 daemon prio=5 os_prio=31 tid=0x0000000131016000 nid=0x17c1b in Object.wait() [0x0000700004b80000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
    - locked <0x00000006c2205698> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
    at com.google.inject.internal.util.$Finalizer.run(Finalizer.java:114)

"Worker-22" eclipse/xtext-eclipse#58 prio=5 os_prio=31 tid=0x000000010580f000 nid=0x16903 in Object.wait() [0x0000700004a7d000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-21" eclipse/xtext-eclipse#57 prio=5 os_prio=31 tid=0x0000000130e54000 nid=0x16703 in Object.wait() [0x000070000497a000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at org.eclipse.core.internal.jobs.ThreadJob.waitForRun(ThreadJob.java:270)
    - locked <0x00000006c1a5c128> (a java.lang.Object)
    at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:197)
    at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:92)
    at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:307)
    at org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry.waitForWorkspaceLock(IndexDiffCacheEntry.java:466)
    at org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry.access$5(IndexDiffCacheEntry.java:458)
    at org.eclipse.egit.core.internal.indexdiff.IndexDiffCacheEntry$5.updateIndexDiff(IndexDiffCacheEntry.java:516)
    at org.eclipse.egit.core.internal.indexdiff.IndexDiffUpdateJob.run(IndexDiffUpdateJob.java:75)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-20" eclipse/xtext-eclipse#56 prio=5 os_prio=31 tid=0x0000000130556800 nid=0x16503 in Object.wait() [0x0000700004877000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-19" eclipse/xtext-eclipse#55 prio=5 os_prio=31 tid=0x0000000127908800 nid=0x16303 in Object.wait() [0x0000700004774000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-18" eclipse/xtext-eclipse#54 prio=5 os_prio=31 tid=0x00000001278cb000 nid=0x16103 in Object.wait() [0x0000700004671000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-17" eclipse/xtext-eclipse#53 prio=5 os_prio=31 tid=0x0000000101600800 nid=0x15f03 in Object.wait() [0x000070000456e000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-16" eclipse/xtext-eclipse#52 prio=5 os_prio=31 tid=0x000000010742b000 nid=0x15d03 in Object.wait() [0x000070000446b000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-15" eclipse/xtext-eclipse#51 prio=5 os_prio=31 tid=0x00000001015ff800 nid=0x15b03 in Object.wait() [0x0000700004368000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-14" eclipse/xtext-eclipse#50 prio=5 os_prio=31 tid=0x0000000130209800 nid=0x15903 in Object.wait() [0x0000700004265000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Event Loop Monitor" eclipse/xtext-eclipse#49 daemon prio=6 os_prio=31 tid=0x00000001070e9800 nid=0x15703 in Object.wait() [0x0000700004162000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.ui.internal.monitoring.EventLoopMonitorThread.sleepForMillis(EventLoopMonitorThread.java:712)
    - locked <0x00000006cc569750> (a java.lang.Object)
    at org.eclipse.ui.internal.monitoring.EventLoopMonitorThread.run(EventLoopMonitorThread.java:540)

"Worker-13" eclipse/xtext-eclipse#48 prio=5 os_prio=31 tid=0x000000010741f000 nid=0x15503 in Object.wait() [0x000070000405f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-12" eclipse/xtext-eclipse#47 prio=5 os_prio=31 tid=0x00000001013aa800 nid=0x15303 in Object.wait() [0x0000700003f5c000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-11" eclipse/xtext-eclipse#46 prio=5 os_prio=31 tid=0x0000000106020800 nid=0x15103 in Object.wait() [0x0000700003e59000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-10" eclipse/xtext-eclipse#45 prio=5 os_prio=31 tid=0x0000000105994800 nid=0x14f03 in Object.wait() [0x0000700003d56000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-9" eclipse/xtext-eclipse#44 prio=5 os_prio=31 tid=0x0000000102b4d000 nid=0x14d07 in Object.wait() [0x0000700003c53000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-8" eclipse/xtext-eclipse#43 prio=5 os_prio=31 tid=0x000000012798d000 nid=0x14b07 in Object.wait() [0x0000700003b50000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-7" eclipse/xtext#2396 prio=5 os_prio=31 tid=0x000000012d774000 nid=0x1490f in Object.wait() [0x0000700003a4d000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Provisioning Event Dispatcher" eclipse/xtext-eclipse#39 daemon prio=5 os_prio=31 tid=0x000000012faaa800 nid=0x1480b in Object.wait() [0x000070000394a000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    - locked <0x00000006c3403900> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"Worker-6" eclipse/xtext-eclipse#35 prio=5 os_prio=31 tid=0x000000010598c000 nid=0x13803 runnable [0x00007000037c1000]
   java.lang.Thread.State: RUNNABLE
    at org.eclipse.core.internal.watson.ElementTree.includes(ElementTree.java:528)
    - locked <0x00000006fb94e440> (a org.eclipse.core.internal.watson.ElementTree)
    at org.eclipse.core.internal.resources.Workspace.getResourceInfo(Workspace.java:1697)
    at org.eclipse.core.internal.resources.Resource.getResourceInfo(Resource.java:1202)
    at org.eclipse.core.internal.resources.Project.internalGetDescription(Project.java:759)
    at org.eclipse.core.internal.resources.Project.hasNature(Project.java:519)
    at org.eclipse.jdt.internal.core.JavaProject.hasJavaNature(JavaProject.java:354)
    at org.eclipse.jdt.internal.core.JavaProject.getEclipsePreferences(JavaProject.java:1484)
    at org.eclipse.jdt.internal.core.JavaProject.getOption(JavaProject.java:1657)
    at org.eclipse.jdt.internal.core.PackageFragment.internalIsValidPackageName(PackageFragment.java:396)
    at org.eclipse.jdt.internal.core.PackageFragment.<init>(PackageFragment.java:65)
    at org.eclipse.jdt.internal.core.PackageFragmentRoot.getPackageFragment(PackageFragmentRoot.java:518)
    at org.eclipse.jdt.internal.core.JavaModelManager.determineIfOnClasspath(JavaModelManager.java:1142)
    at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:993)
    at org.eclipse.jdt.internal.core.JavaModelManager.create(JavaModelManager.java:934)
    at org.eclipse.jdt.core.JavaCore.create(JavaCore.java:3303)
    at org.eclipse.jdt.internal.core.util.Util.getPackageFragment(Util.java:959)
    at org.eclipse.jdt.internal.core.util.Util.getCompilationUnit(Util.java:773)
    at org.eclipse.jdt.internal.core.util.Util.getUnresolvedJavaElement(Util.java:1536)
    at org.eclipse.jdt.internal.core.util.Util.getUnresolvedJavaElement(Util.java:1374)
    at org.eclipse.jdt.core.dom.MethodBinding.getUnresolvedJavaElement(MethodBinding.java:281)
    at org.eclipse.jdt.core.dom.MethodBinding.getJavaElement(MethodBinding.java:267)
    at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.getParameterNamesFromSource(JdtBasedTypeFactory.java:1346)
    at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.enhanceExecutable(JdtBasedTypeFactory.java:1295)
    at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createOperation(JdtBasedTypeFactory.java:1541)
    at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createMethods(JdtBasedTypeFactory.java:1044)
    at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createType(JdtBasedTypeFactory.java:515)
    at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createType(JdtBasedTypeFactory.java:456)
    at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createType(JdtBasedTypeFactory.java:334)
    at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createType(JdtBasedTypeFactory.java:420)
    at org.eclipse.xtext.common.types.access.jdt.JdtBasedTypeFactory.createType(JdtBasedTypeFactory.java:1)
    at org.eclipse.xtext.common.types.access.jdt.JdtTypeMirror.initialize(JdtTypeMirror.java:67)
    at org.eclipse.xtext.common.types.access.TypeResource.doLoad(TypeResource.java:130)
    at org.eclipse.emf.ecore.resource.impl.ResourceImpl.load(ResourceImpl.java:1518)
    at org.eclipse.xtext.common.types.access.TypeResource.load(TypeResource.java:116)
    at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.createResourceAndFindType(JdtTypeProvider.java:285)
    at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findObjectTypeInJavaProject(JdtTypeProvider.java:268)
    at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.doFindObjectType(JdtTypeProvider.java:211)
    at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findObjectType(JdtTypeProvider.java:191)
    - locked <0x00000006fb9526e0> (a java.lang.Object)
    at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.doFindTypeByName(JdtTypeProvider.java:149)
    at org.eclipse.xtext.common.types.access.jdt.JdtTypeProvider.findTypeByName(JdtTypeProvider.java:158)
    at org.eclipse.xtext.common.types.xtext.AbstractTypeScope.getSingleElement(AbstractTypeScope.java:59)
    at org.eclipse.xtext.common.types.xtext.AbstractTypeScope.getSingleElement(AbstractTypeScope.java:54)
    at org.eclipse.xtend.core.scoping.RecordingTypeScope.getSingleElement(RecordingTypeScope.java:41)
    at org.eclipse.xtext.scoping.impl.AbstractScope.getSingleElement(AbstractScope.java:108)
    at org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:121)
    at org.eclipse.xtext.linking.lazy.LazyLinkingResource.getEObject(LazyLinkingResource.java:247)
    at org.eclipse.xtext.xbase.resource.BatchLinkableResource.getEObject(BatchLinkableResource.java:119)
    - locked <0x00000006fb9526e0> (a java.lang.Object)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:223)
    at org.eclipse.xtend.core.scoping.XtendImportedNamespaceScopeProvider.getImportScope(XtendImportedNamespaceScopeProvider.java:294)
    at org.eclipse.xtend.core.scoping.XtendImportedNamespaceScopeProvider.access$2(XtendImportedNamespaceScopeProvider.java:267)
    at org.eclipse.xtend.core.scoping.XtendImportedNamespaceScopeProvider$1.get(XtendImportedNamespaceScopeProvider.java:136)
    at org.eclipse.xtend.core.scoping.XtendImportedNamespaceScopeProvider$1.get(XtendImportedNamespaceScopeProvider.java:1)
    at org.eclipse.xtext.util.OnChangeEvictingCache.get(OnChangeEvictingCache.java:77)
    at org.eclipse.xtend.core.scoping.XtendImportedNamespaceScopeProvider.getScope(XtendImportedNamespaceScopeProvider.java:124)
    at org.eclipse.xtext.xbase.scoping.batch.TypeScopes.createTypeScope(TypeScopes.java:59)
    at org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider.getScope(XbaseBatchScopeProvider.java:105)
    at org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider.getScope(XbaseWithAnnotationsBatchScopeProvider.java:53)
    at org.eclipse.xtext.linking.impl.DefaultLinkingService.getScope(DefaultLinkingService.java:59)
    at org.eclipse.xtext.linking.impl.DefaultLinkingService.getLinkedObjects(DefaultLinkingService.java:119)
    at org.eclipse.xtend.core.macro.XAnnotationExtensions.isProcessed(XAnnotationExtensions.java:163)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider$9.apply(ActiveAnnotationContextProvider.java:291)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider$9.apply(ActiveAnnotationContextProvider.java:1)
    at org.eclipse.xtext.xbase.lib.internal.BooleanFunctionDelegate.apply(BooleanFunctionDelegate.java:41)
    at com.google.common.collect.Iterators$7.computeNext(Iterators.java:647)
    at com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
    at com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider.registerMacroAnnotations(ActiveAnnotationContextProvider.java:295)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider.searchAnnotatedElements(ActiveAnnotationContextProvider.java:281)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider.access$3(ActiveAnnotationContextProvider.java:181)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider$3.apply(ActiveAnnotationContextProvider.java:202)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider$3.apply(ActiveAnnotationContextProvider.java:1)
    at org.eclipse.xtext.xbase.lib.IteratorExtensions.forEach(IteratorExtensions.java:363)
    at org.eclipse.xtext.xbase.lib.IterableExtensions.forEach(IterableExtensions.java:333)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider.searchAnnotatedElements(ActiveAnnotationContextProvider.java:205)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider.access$3(ActiveAnnotationContextProvider.java:181)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider$2.apply(ActiveAnnotationContextProvider.java:189)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider$2.apply(ActiveAnnotationContextProvider.java:1)
    at org.eclipse.xtext.xbase.lib.IteratorExtensions.forEach(IteratorExtensions.java:363)
    at org.eclipse.xtext.xbase.lib.IterableExtensions.forEach(IterableExtensions.java:333)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider.searchAnnotatedElements(ActiveAnnotationContextProvider.java:192)
    at org.eclipse.xtend.core.macro.ActiveAnnotationContextProvider.computeContext(ActiveAnnotationContextProvider.java:150)
    at org.eclipse.xtend.core.jvmmodel.XtendJvmModelInferrer.infer(XtendJvmModelInferrer.java:186)
    at org.eclipse.xtext.xbase.jvmmodel.JvmModelAssociator.installDerivedState(JvmModelAssociator.java:382)
    at org.eclipse.xtext.resource.DerivedStateAwareResource.installDerivedState(DerivedStateAwareResource.java:242)
    at org.eclipse.xtext.xbase.resource.BatchLinkableResource.getContents(BatchLinkableResource.java:148)
    - locked <0x00000006fb9526e0> (a java.lang.Object)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareBatchTypeResolver.getEntryPoints(LogicalContainerAwareBatchTypeResolver.java:44)
    at org.eclipse.xtend.core.typesystem.TypeDeclarationAwareBatchTypeResolver.getEntryPoints(TypeDeclarationAwareBatchTypeResolver.java:56)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultBatchTypeResolver.getTypeResolver(DefaultBatchTypeResolver.java:84)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver$1.get(CachingBatchTypeResolver.java:49)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver$1.get(CachingBatchTypeResolver.java:1)
    at org.eclipse.xtext.util.OnChangeEvictingCache.get(OnChangeEvictingCache.java:77)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver.doResolveTypes(CachingBatchTypeResolver.java:46)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractBatchTypeResolver.resolveTypes(AbstractBatchTypeResolver.java:69)
    at org.eclipse.xtext.xbase.resource.BatchLinkingService.resolveBatched(BatchLinkingService.java:71)
    at org.eclipse.xtext.xbase.resource.BatchLinkableResource.resolveLazyCrossReferences(BatchLinkableResource.java:165)
    at org.eclipse.xtext.EcoreUtil2.resolveLazyCrossReferences(EcoreUtil2.java:498)
    at org.eclipse.xtext.builder.clustering.ClusteringBuilderState.doUpdate(ClusteringBuilderState.java:230)
    at org.eclipse.xtext.builder.builderState.AbstractBuilderState.update(AbstractBuilderState.java:116)
    - locked <0x00000006c7c02700> (a org.eclipse.xtext.builder.clustering.ClusteringBuilderState)
    at org.eclipse.xtext.builder.impl.XtextBuilder.doBuild(XtextBuilder.java:287)
    at org.eclipse.xtext.builder.impl.XtextBuilder.incrementalBuild(XtextBuilder.java:267)
    at org.eclipse.xtext.builder.impl.XtextBuilder.build(XtextBuilder.java:161)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:735)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:246)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:301)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:304)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:360)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:383)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-5" eclipse/xtext-eclipse#34 prio=5 os_prio=31 tid=0x000000010598b000 nid=0x13707 in Object.wait() [0x00007000036c1000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"org.eclipse.jface.text.reconciler.MonoReconciler" eclipse/xtext-eclipse#33 daemon prio=1 os_prio=31 tid=0x000000012fd3a800 nid=0x207b in Object.wait() [0x00007000035be000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.jface.text.reconciler.AbstractReconciler$BackgroundThread.run(AbstractReconciler.java:180)
    - locked <0x00000006c550e360> (a org.eclipse.jface.text.reconciler.DirtyRegionQueue)

"EventAdmin Async Event Dispatcher Thread" eclipse/xtext-eclipse#32 daemon prio=6 os_prio=31 tid=0x0000000106ed4000 nid=0x1181b in Object.wait() [0x0000700003438000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    - locked <0x00000006c550e370> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"Java indexing" eclipse/xtext-eclipse#30 daemon prio=4 os_prio=31 tid=0x0000000130238800 nid=0x11603 waiting for monitor entry [0x0000700003334000]
   java.lang.Thread.State: BLOCKED (on object monitor)
    at org.eclipse.core.internal.watson.ElementTree.includes(ElementTree.java:528)
    - waiting to lock <0x00000006fb94e440> (a org.eclipse.core.internal.watson.ElementTree)
    at org.eclipse.core.internal.resources.Workspace.getResourceInfo(Workspace.java:1697)
    at org.eclipse.core.internal.resources.Container.findMember(Container.java:105)
    at org.eclipse.core.internal.resources.Container.findMember(Container.java:99)
    at org.eclipse.jdt.internal.core.search.matching.ClasspathSourceDirectory.directoryTable(ClasspathSourceDirectory.java:58)
    at org.eclipse.jdt.internal.core.search.matching.ClasspathSourceDirectory.findClass(ClasspathSourceDirectory.java:110)
    at org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment.findClass(JavaSearchNameEnvironment.java:149)
    at org.eclipse.jdt.internal.core.search.matching.JavaSearchNameEnvironment.findType(JavaSearchNameEnvironment.java:188)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:174)
    at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:214)
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:3228)
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2940)
    at org.eclipse.jdt.internal.compiler.ast.SingleTypeReference.getTypeBinding(SingleTypeReference.java:51)
    at org.eclipse.jdt.internal.compiler.ast.TypeReference.internalResolveType(TypeReference.java:495)
    at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:594)
    at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:590)
    at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:564)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1320)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:952)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:1113)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectMemberTypes(ClassScope.java:920)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:1122)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:324)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:312)
    at org.eclipse.jdt.internal.core.search.indexing.SourceIndexer.accept(SourceIndexer.java:125)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:184)
    at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:214)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findImport(CompilationUnitScope.java:466)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleImport(CompilationUnitScope.java:520)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.resolveSingleImport(CompilationUnitScope.java:733)
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getTypeOrPackage(Scope.java:3208)
    at org.eclipse.jdt.internal.compiler.lookup.Scope.getType(Scope.java:2940)
    at org.eclipse.jdt.internal.compiler.ast.SingleTypeReference.getTypeBinding(SingleTypeReference.java:51)
    at org.eclipse.jdt.internal.compiler.ast.TypeReference.internalResolveType(TypeReference.java:495)
    at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:594)
    at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveType(TypeReference.java:590)
    at org.eclipse.jdt.internal.compiler.ast.TypeReference.resolveSuperType(TypeReference.java:564)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.findSupertype(ClassScope.java:1320)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectSuperclass(ClassScope.java:952)
    at org.eclipse.jdt.internal.compiler.lookup.ClassScope.connectTypeHierarchy(ClassScope.java:1113)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.connectTypeHierarchy(CompilationUnitScope.java:324)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.completeTypeBindings(LookupEnvironment.java:312)
    at org.eclipse.jdt.internal.core.search.indexing.SourceIndexer.accept(SourceIndexer.java:125)
    at org.eclipse.jdt.internal.compiler.lookup.LookupEnvironment.askForType(LookupEnvironment.java:184)
    at org.eclipse.jdt.internal.compiler.lookup.PackageBinding.getTypeOrPackage(PackageBinding.java:214)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findImport(CompilationUnitScope.java:466)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.findSingleImport(CompilationUnitScope.java:520)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInImports(CompilationUnitScope.java:397)
    at org.eclipse.jdt.internal.compiler.lookup.CompilationUnitScope.faultInTypes(CompilationUnitScope.java:445)
    at org.eclipse.jdt.internal.core.search.indexing.SourceIndexer.resolveDocument(SourceIndexer.java:164)
    at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.resolveDocument(JavaSearchParticipant.java:102)
    at org.eclipse.jdt.internal.core.search.indexing.IndexManager.indexResolvedDocument(IndexManager.java:510)
    at org.eclipse.jdt.internal.core.search.indexing.IndexManager$1.execute(IndexManager.java:989)
    at org.eclipse.jdt.internal.core.search.processing.JobManager.run(JobManager.java:394)
    at java.lang.Thread.run(Thread.java:745)

"Worker-4" eclipse/xtext-eclipse#29 prio=5 os_prio=31 tid=0x0000000106196800 nid=0x11403 in Object.wait() [0x0000700003232000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-3" eclipse/xtext-eclipse#28 prio=5 os_prio=31 tid=0x0000000107215000 nid=0x11203 in Object.wait() [0x000070000312f000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"Worker-2" eclipse/xtext-eclipse#27 prio=5 os_prio=31 tid=0x000000012fb07000 nid=0x11003 waiting on condition [0x000070000302c000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at org.eclipse.jdt.internal.core.search.processing.JobManager$1ProgressJob.run(JobManager.java:344)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Worker-1" eclipse/xtext-eclipse#26 prio=5 os_prio=31 tid=0x0000000105935000 nid=0x10e03 in Object.wait() [0x0000700002f29000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at org.eclipse.core.internal.jobs.ThreadJob.waitForRun(ThreadJob.java:270)
    - locked <0x00000006c1a5c128> (a java.lang.Object)
    at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:197)
    at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:92)
    at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:307)
    at org.eclipse.core.internal.utils.StringPoolJob.run(StringPoolJob.java:98)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

"Bundle File Closer" eclipse/xtext-eclipse#25 daemon prio=6 os_prio=31 tid=0x000000012f80c000 nid=0x10b07 in Object.wait() [0x0000700002e26000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    - locked <0x00000006c2c19dc8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"Worker-0" eclipse/xtext-eclipse#24 prio=5 os_prio=31 tid=0x00000001310cf000 nid=0x10c07 in Object.wait() [0x0000700002d23000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188)
    - locked <0x00000006c2b0bf28> (a org.eclipse.core.internal.jobs.WorkerPool)
    at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:52)

"EMF Reference Cleaner" eclipse/xtext-eclipse#19 daemon prio=5 os_prio=31 tid=0x0000000102b3a800 nid=0xe003 in Object.wait() [0x0000700002c20000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
    - locked <0x00000006c1a9db78> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
    at org.eclipse.emf.common.util.CommonUtil$1ReferenceClearingQueuePollingThread.run(CommonUtil.java:70)

"Worker-JM" eclipse/xtext-eclipse#18 prio=5 os_prio=31 tid=0x0000000102ad3800 nid=0xde03 in Object.wait() [0x0000700002b1d000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.InternalWorker.run(InternalWorker.java:59)
    - locked <0x00000006c2b0c0d0> (a java.util.ArrayList)

"[Timer] - Main Queue Handler" eclipse/xtext-eclipse#17 daemon prio=5 os_prio=31 tid=0x000000010142f800 nid=0xdb27 in Object.wait() [0x0000700002a1a000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.equinox.internal.util.impl.tpt.timer.TimerImpl.run(TimerImpl.java:141)
    - locked <0x00000006c2b0cfd8> (a java.lang.Object)
    at java.lang.Thread.run(Thread.java:745)

"Start Level: Equinox Container: 70953f3e-6e85-0016-10e6-ef37684cb76a" eclipse/xtext-eclipse#15 daemon prio=5 os_prio=31 tid=0x000000010136f800 nid=0xd803 in Object.wait() [0x0000700002814000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000006c2b0c0e8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at java.lang.Object.wait(Object.java:502)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    - locked <0x00000006c2b0c0e8> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"Framework Event Dispatcher: org.eclipse.osgi.internal.framework.EquinoxEventPublisher@73ad7e90" eclipse/xtext-eclipse#14 daemon prio=5 os_prio=31 tid=0x0000000101348800 nid=0xd603 in Object.wait() [0x0000700002711000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.getNextEvent(EventManager.java:400)
    - locked <0x00000006c2b0c270> (a org.eclipse.osgi.framework.eventmgr.EventManager$EventThread)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:336)

"Active Thread: Equinox Container: 70953f3e-6e85-0016-10e6-ef37684cb76a" eclipse/xtext#2401 prio=5 os_prio=31 tid=0x000000010152b000 nid=0xd40f waiting on condition [0x000070000260e000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000006c0a00188> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

"Service Thread" eclipse/xtext-eclipse#10 daemon prio=9 os_prio=31 tid=0x00000001010c8000 nid=0x9503 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread3" eclipse/xtext#2400 daemon prio=9 os_prio=31 tid=0x00000001068ef000 nid=0x9303 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread2" eclipse/xtext-eclipse#8 daemon prio=9 os_prio=31 tid=0x0000000102828800 nid=0x9103 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" eclipse/xtext-eclipse#7 daemon prio=9 os_prio=31 tid=0x00000001068ee800 nid=0x8f03 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" eclipse/xtext-eclipse#6 daemon prio=9 os_prio=31 tid=0x00000001068ed800 nid=0x8d03 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" eclipse/xtext-eclipse#5 daemon prio=9 os_prio=31 tid=0x00000001068ed000 nid=0x8b03 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Surrogate Locker Thread (Concurrent GC)" eclipse/xtext-eclipse#4 daemon prio=9 os_prio=31 tid=0x0000000101039000 nid=0x8707 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" eclipse/xtext-eclipse#3 daemon prio=8 os_prio=31 tid=0x0000000102832000 nid=0x8503 in Object.wait() [0x0000700001ae7000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
    - locked <0x00000006c0980b48> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)

"Reference Handler" eclipse/xtext-eclipse#2 daemon prio=10 os_prio=31 tid=0x0000000100827000 nid=0x8303 in Object.wait() [0x00007000019e4000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at java.lang.Object.wait(Object.java:502)
    at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
    - locked <0x00000006c0980170> (a java.lang.ref.Reference$Lock)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)

"main" eclipse/xtext-eclipse#1 prio=6 os_prio=31 tid=0x000000010103c000 nid=0x160b in Object.wait() [0x00007fff5fbf7000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    at org.eclipse.core.internal.jobs.ThreadJob.waitForRun(ThreadJob.java:272)
    - locked <0x00000006c1a5c128> (a java.lang.Object)
    at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:197)
    at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:92)
    at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:307)
    at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:121)
    at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2188)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2235)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
    at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:128)
    - locked <0x00000006db300f00> (a org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation)
    at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:73)
    at org.eclipse.ui.internal.editors.text.WorkspaceOperationRunner.run(WorkspaceOperationRunner.java:63)
    at org.eclipse.ui.texteditor.AbstractDocumentProvider.executeOperation(AbstractDocumentProvider.java:536)
    at org.eclipse.ui.texteditor.AbstractDocumentProvider.saveDocument(AbstractDocumentProvider.java:611)
    at org.eclipse.ui.texteditor.AbstractTextEditor.performSave(AbstractTextEditor.java:5025)
    at org.eclipse.ui.texteditor.AbstractTextEditor.doSave(AbstractTextEditor.java:4820)
    at org.eclipse.xtext.ui.editor.XtextEditor.doSave(XtextEditor.java:312)
    at org.eclipse.ui.texteditor.AbstractTextEditor$TextEditorSavable.doSave(AbstractTextEditor.java:7117)
    at org.eclipse.ui.Saveable.doSave(Saveable.java:220)
    at org.eclipse.ui.internal.SaveableHelper.doSaveModel(SaveableHelper.java:357)
    at org.eclipse.ui.internal.SaveableHelper$3.run(SaveableHelper.java:201)
    at org.eclipse.ui.internal.SaveableHelper$5.run(SaveableHelper.java:285)
    at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:437)
    at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:353)
    at org.eclipse.ui.internal.WorkbenchWindow$14.run(WorkbenchWindow.java:2184)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2180)
    at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:293)
    at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:271)
    at org.eclipse.ui.internal.SaveableHelper.saveModels(SaveableHelper.java:213)
    at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:148)
    at org.eclipse.ui.internal.WorkbenchPage.saveSaveable(WorkbenchPage.java:3904)
    at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3918)
    at org.eclipse.ui.internal.handlers.SaveHandler.execute(SaveHandler.java:54)
    at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:295)
    at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:90)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:54)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:282)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:264)
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:132)
    at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:152)
    at org.eclipse.core.commands.Command.executeWithChecks(Command.java:494)
    at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:488)
    at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:210)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:286)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:507)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:558)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:378)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.access$0(KeyBindingDispatcher.java:324)
    at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:86)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1097)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4243)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1501)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1509)
    at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1538)
    at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1534)
    at org.eclipse.swt.widgets.Canvas.sendKeyEvent(Canvas.java:515)
    at org.eclipse.swt.widgets.Control.doCommandBySelector(Control.java:1090)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:5817)
    at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
    at org.eclipse.swt.internal.cocoa.NSResponder.interpretKeyEvents(NSResponder.java:68)
    at org.eclipse.swt.widgets.Composite.keyDown(Composite.java:610)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:5727)
    at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
    at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:227)
    at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:2140)
    at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:2402)
    at org.eclipse.swt.widgets.Display.windowProc(Display.java:5789)
    at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
    at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:5218)
    at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5367)
    at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
    at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:128)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3695)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1121)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1022)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:687)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1519)

"VM Thread" os_prio=31 tid=0x0000000100822000 nid=0x8103 runnable 

"Gang worker#0 (Parallel GC Threads)" os_prio=31 tid=0x0000000106807000 nid=0x5703 runnable 

"Gang worker#1 (Parallel GC Threads)" os_prio=31 tid=0x0000000102829800 nid=0x5903 runnable 

"Gang worker#2 (Parallel GC Threads)" os_prio=31 tid=0x000000010282a000 nid=0x5b03 runnable 

"Gang worker#3 (Parallel GC Threads)" os_prio=31 tid=0x000000010282b000 nid=0x5d03 runnable 

"Gang worker#4 (Parallel GC Threads)" os_prio=31 tid=0x000000010282b800 nid=0x5f03 runnable 

"Gang worker#5 (Parallel GC Threads)" os_prio=31 tid=0x000000010282c000 nid=0x6103 runnable 

"Gang worker#6 (Parallel GC Threads)" os_prio=31 tid=0x000000010282c800 nid=0x6303 runnable 

"Gang worker#7 (Parallel GC Threads)" os_prio=31 tid=0x000000010282d800 nid=0x6503 runnable 

"G1 Main Concurrent Mark GC Thread" os_prio=31 tid=0x000000010282f800 nid=0x7903 runnable 

"Gang worker#0 (G1 Parallel Marking Threads)" os_prio=31 tid=0x000000010105d800 nid=0x7b03 runnable 

"Gang worker#1 (G1 Parallel Marking Threads)" os_prio=31 tid=0x000000010105e000 nid=0x7d03 runnable 

"G1 Concurrent Refinement Thread#0" os_prio=31 tid=0x0000000101041000 nid=0x7703 runnable 

"G1 Concurrent Refinement Thread#1" os_prio=31 tid=0x0000000101040800 nid=0x7503 runnable 

"G1 Concurrent Refinement Thread#2" os_prio=31 tid=0x000000010103f800 nid=0x7303 runnable 

"G1 Concurrent Refinement Thread#3" os_prio=31 tid=0x000000010103f000 nid=0x7103 runnable 

"G1 Concurrent Refinement Thread#4" os_prio=31 tid=0x000000010103e000 nid=0x6f03 runnable 

"G1 Concurrent Refinement Thread#5" os_prio=31 tid=0x000000010103d800 nid=0x6d03 runnable 

"G1 Concurrent Refinement Thread#6" os_prio=31 tid=0x000000010103c800 nid=0x6b03 runnable 

"G1 Concurrent Refinement Thread#7" os_prio=31 tid=0x000000010282e800 nid=0x6903 runnable 

"G1 Concurrent Refinement Thread#8" os_prio=31 tid=0x000000010282e000 nid=0x6703 runnable 

"String Deduplication Thread" os_prio=31 tid=0x00000001068cc800 nid=0x7f03 runnable 

"VM Periodic Task Thread" os_prio=31 tid=0x00000001068dd000 nid=0x9703 waiting on condition 

JNI global references: 1785

[Content Assist] does not work properly without org.eclipse.xtext.common.Terminals

Given is the following xtext grammar:

grammar org.xtext.example.mydsl.MyDsl

generate myDsl "http://www.xtext.org/example/mydsl/MyDsl"

PolygonBasedShape:
    shape = PolygonBasedNodeShape;

enum PolygonBasedNodeShape:
    octagon | oval |
    parallelogram | pentagon | plain | plaintext | point | polygon | primersite | promoter | proteasesite | proteinstab |
    rarrow | record | rect | rectangle | restrictionsite | ribosite | rnastab | rpromoter;

Use Case1 (Content Assistant works properly):

  1. Create an empty test.mydsl file based on the grammar above and open it with the generated editor.
  2. Press Ctrl+Space to invoke the Content Assistant.
  3. Type the letter 'p' and 'r'.
    The Content Assistant suggests correct proposals beginning with the prefix 'pr'.
    content_assistant_ok

Use Case2 (Content Assistant does not work properly):

  1. Create an empty test.mydsl file based on the grammar above and open it with the generated editor.
  2. Type the letter 'p' and 'r'.
  3. Press Ctrl+Space to invoke the Content Assistant.
    The Content Assistant suggests incorrect proposals beginning with the prefix 'r'.
    content_assistant_not_ok

HINT: When modifying the grammar to use the "org.eclipse.xtext.common.Terminals", the content assistant works for both of the use cases properly.

[ide] Clarify API for edit positions

In ContentAssistEntry we have explicit structures for edit positions. VS Code has an undocumented syntax with double curly braces, e.g. val {{name}} = {{expression}}. We should decide whether to keep the ContentAssistEntry structures and translate them to the VS Code syntax for the LSP service, or to deprecate the structures and switch completely to the VS Code syntax.

Fix Xtext serializer tests for unordered groups

org.eclipse.xtext.parser.unorderedGroups.SerializerTest > testSerialize_1_B FAILED
    org.junit.ComparisonFailure at SerializerTest.java:47

org.eclipse.xtext.parser.unorderedGroups.SerializerTest > testSerialize_1_C FAILED
    org.junit.ComparisonFailure at SerializerTest.java:53

org.eclipse.xtext.parser.unorderedGroups.SerializerTest > testSerialize_1_D FAILED
    org.junit.ComparisonFailure at SerializerTest.java:59

org.eclipse.xtext.parser.unorderedGroups.SerializerTest > testSerialize_2_A_B_A_B FAILED
    org.junit.ComparisonFailure at SerializerTest.java:150

org.eclipse.xtext.parser.unorderedGroups.SerializerTest > testSerialize_1_B_C FAILED
    org.junit.ComparisonFailure at SerializerTest.java:120

org.eclipse.xtext.parser.unorderedGroups.SerializerTest > testSerialize_1_B_D FAILED
    org.junit.ComparisonFailure at SerializerTest.java:127

org.eclipse.xtext.parser.unorderedGroups.SerializerTest > testSerialize_1_C_D FAILED
    org.junit.ComparisonFailure at SerializerTest.java:134

org.eclipse.xtext.parser.unorderedGroups.SerializerTest > testSerialize_1_B_C_D FAILED
    org.junit.ComparisonFailure at SerializerTest.java:113

org.eclipse.xtext.parser.unorderedGroups.SerializerTest > testNoValueAssigned FAILED
    org.junit.ComparisonFailure at SerializerTest.java:35

org.eclipse.xtext.parser.unorderedGroups.SerializerTest > testSerialize_2_A_B_A_B_A_B FAILED
    org.junit.ComparisonFailure at SerializerTest.java:161

UnsupportedOperationException when closing Eclipse early

On Xtext master, I get the following message using the following steps:

  1. Open a large Xtend file
  2. Re-start Eclipse
  3. Shortly after the editor with the Xtend is automatically re-opened (i.e. when "Initializing Outline" is displayed), close Eclipse

Example project attached: xtext-extras-29.zip

1    [Worker-0] ERROR org.eclipse.xtext.xbase.resource.BatchLinkableResource  - resolution of uriFragment '|79' failed.
java.lang.UnsupportedOperationException: TODO: import a functional handle on the type resolution that delegates to the best available (current, but evolving) result
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.reentrantResolve(DefaultReentrantTypeResolver.java:133)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getDelegate(CompoundReentrantTypeResolver.java:108)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getDelegate(CompoundReentrantTypeResolver.java:161)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getActualType(CompoundReentrantTypeResolver.java:153)
    at org.eclipse.xtext.xbase.typesystem.internal.ForwardingResolvedTypes.getActualType(ForwardingResolvedTypes.java:40)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$DemandTypeReferenceProvider.doGetTypReferenceWithAnotherTypeReference(LogicalContainerAwareReentrantTypeResolver.java:200)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$DemandTypeReferenceProvider.doGetTypeReference(LogicalContainerAwareReentrantTypeResolver.java:192)
    at org.eclipse.xtext.xbase.typesystem.util.AbstractReentrantTypeReferenceProvider.getTypeReference(AbstractReentrantTypeReferenceProvider.java:28)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.getEquivalent(XComputedTypeReferenceImplCustom.java:46)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:165)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:1)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.accept(XComputedTypeReferenceImplCustom.java:27)
    at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitor.visit(AbstractTypeReferenceVisitor.java:34)
    at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitor.doVisitSpecializedTypeReference(AbstractTypeReferenceVisitor.java:50)
    at org.eclipse.xtext.xtype.util.AbstractXtypeReferenceVisitor.doVisitComputedTypeReference(AbstractXtypeReferenceVisitor.java:26)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:168)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:1)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.accept(XComputedTypeReferenceImplCustom.java:27)
    at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitor.visit(AbstractTypeReferenceVisitor.java:34)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.toLightweightReference(LightweightTypeReferenceFactory.java:83)
    at org.eclipse.xtext.xbase.typesystem.references.StandardTypeReferenceOwner.toLightweightTypeReference(StandardTypeReferenceOwner.java:117)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes.doGetDeclaredType(ResolvedTypes.java:994)
    at org.eclipse.xtext.xbase.typesystem.internal.StackedResolvedTypes.doGetDeclaredType(StackedResolvedTypes.java:279)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes.doGetActualType(ResolvedTypes.java:957)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes.getActualType(ResolvedTypes.java:945)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.getDeclaredType(AbstractLinkingCandidate.java:610)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.getDeclaredType(ResolvedFeature.java:276)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.applyToComputationState(AbstractLinkingCandidate.java:288)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.applyToComputationState(ResolvedFeature.java:121)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer._computeTypes(XbaseTypeComputer.java:1036)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer.computeTypes(XbaseTypeComputer.java:99)
    at org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.computeTypes(XbaseWithAnnotationsTypeComputer.java:46)
    at org.eclipse.xtend.core.typesystem.XtendTypeComputer.computeTypes(XtendTypeComputer.java:64)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.doComputeTypes(AbstractTypeComputationState.java:121)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.computeTypes(AbstractTypeComputationState.java:109)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.resolveArgumentType(AbstractLinkingCandidate.java:627)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.resolveArgumentType(ResolvedFeature.java:187)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.computeFixedArityArgumentType(AbstractLinkingCandidate.java:579)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.computeArgumentType(AbstractLinkingCandidate.java:443)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.computeArgumentTypes(AbstractLinkingCandidate.java:430)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.preApply(AbstractLinkingCandidate.java:378)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.applyToComputationState(AbstractLinkingCandidate.java:286)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.applyToComputationState(ResolvedFeature.java:121)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer._computeTypes(XbaseTypeComputer.java:1036)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer.computeTypes(XbaseTypeComputer.java:99)
    at org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.computeTypes(XbaseWithAnnotationsTypeComputer.java:46)
    at org.eclipse.xtend.core.typesystem.XtendTypeComputer.computeTypes(XtendTypeComputer.java:64)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.doComputeTypes(AbstractTypeComputationState.java:121)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.computeTypes(AbstractTypeComputationState.java:109)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer._computeTypes(XbaseTypeComputer.java:460)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer.computeTypes(XbaseTypeComputer.java:105)
    at org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.computeTypes(XbaseWithAnnotationsTypeComputer.java:46)
    at org.eclipse.xtend.core.typesystem.XtendTypeComputer.computeTypes(XtendTypeComputer.java:64)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.doComputeTypes(AbstractTypeComputationState.java:121)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.computeTypes(AbstractTypeComputationState.java:109)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractRootTypeComputationState.computeTypes(AbstractRootTypeComputationState.java:32)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver._computeTypes(DefaultReentrantTypeResolver.java:197)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.computeTypes(DefaultReentrantTypeResolver.java:189)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.computeTypes(LogicalContainerAwareReentrantTypeResolver.java:728)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeDanglingExpressionType(XtendReentrantTypeResolver.java:447)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:430)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:403)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:390)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:380)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.resolve(DefaultReentrantTypeResolver.java:163)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.reentrantResolve(DefaultReentrantTypeResolver.java:139)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.reentrantResolve(CompoundReentrantTypeResolver.java:79)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver$LazyResolvedTypes.resolveTypes(CachingBatchTypeResolver.java:80)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver$2.process(CachingBatchTypeResolver.java:57)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver$2.process(CachingBatchTypeResolver.java:1)
    at org.eclipse.xtext.util.concurrent.IUnitOfWork$Void.exec(IUnitOfWork.java:37)
    at org.eclipse.xtext.util.OnChangeEvictingCache.execWithoutCacheClear(OnChangeEvictingCache.java:129)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver.doResolveTypes(CachingBatchTypeResolver.java:53)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractBatchTypeResolver.resolveTypes(AbstractBatchTypeResolver.java:69)
    at org.eclipse.xtext.xbase.resource.BatchLinkingService.resolveBatched(BatchLinkingService.java:60)
    at org.eclipse.xtext.xbase.resource.BatchLinkingService.resolveBatched(BatchLinkingService.java:41)
    at org.eclipse.xtext.xbase.resource.BatchLinkableResource.getEObject(BatchLinkableResource.java:117)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:223)
    at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:199)
    at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:259)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1477)
    at org.eclipse.xtext.xbase.impl.XAbstractFeatureCallImplCustom.getFeature(XAbstractFeatureCallImplCustom.java:48)
    at org.eclipse.xtext.xbase.impl.XAbstractFeatureCallImplCustom.ensureFeatureLinked(XAbstractFeatureCallImplCustom.java:135)
    at org.eclipse.xtext.xbase.impl.XFeatureCallImplCustom.isPackageFragment(XFeatureCallImplCustom.java:54)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:99)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:206)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:206)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:212)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:206)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:206)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findReferences(ReferenceFinder.java:139)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findReferences(ReferenceFinder.java:125)
    at org.eclipse.xtext.ui.editor.occurrences.DefaultOccurrenceComputer$1.exec(DefaultOccurrenceComputer.java:139)
    at org.eclipse.xtext.ui.editor.occurrences.DefaultOccurrenceComputer$1.exec(DefaultOccurrenceComputer.java:1)
    at org.eclipse.xtext.util.concurrent.CancelableUnitOfWork.exec(CancelableUnitOfWork.java:26)
    at org.eclipse.xtext.resource.OutdatedStateManager.exec(OutdatedStateManager.java:92)
    at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.internalReadOnly(XtextDocument.java:520)
    at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.readOnly(XtextDocument.java:492)
    at org.eclipse.xtext.ui.editor.model.XtextDocument.readOnly(XtextDocument.java:133)
    at org.eclipse.xtext.ui.editor.occurrences.DefaultOccurrenceComputer.createAnnotationMap(DefaultOccurrenceComputer.java:102)
    at org.eclipse.xtext.ui.editor.occurrences.OccurrenceMarker$MarkOccurrenceJob.run(OccurrenceMarker.java:123)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

!ENTRY org.apache.log4j 4 0 2016-08-03 11:34:00.830
!MESSAGE org.eclipse.xtext.xbase.resource.BatchLinkableResource  - resolution of uriFragment '|79' failed.

!STACK 0
java.lang.UnsupportedOperationException: TODO: import a functional handle on the type resolution that delegates to the best available (current, but evolving) result
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.reentrantResolve(DefaultReentrantTypeResolver.java:133)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getDelegate(CompoundReentrantTypeResolver.java:108)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getDelegate(CompoundReentrantTypeResolver.java:161)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getActualType(CompoundReentrantTypeResolver.java:153)
    at org.eclipse.xtext.xbase.typesystem.internal.ForwardingResolvedTypes.getActualType(ForwardingResolvedTypes.java:40)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$DemandTypeReferenceProvider.doGetTypReferenceWithAnotherTypeReference(LogicalContainerAwareReentrantTypeResolver.java:200)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$DemandTypeReferenceProvider.doGetTypeReference(LogicalContainerAwareReentrantTypeResolver.java:192)
    at org.eclipse.xtext.xbase.typesystem.util.AbstractReentrantTypeReferenceProvider.getTypeReference(AbstractReentrantTypeReferenceProvider.java:28)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.getEquivalent(XComputedTypeReferenceImplCustom.java:46)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:165)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:1)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.accept(XComputedTypeReferenceImplCustom.java:27)
    at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitor.visit(AbstractTypeReferenceVisitor.java:34)
    at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitor.doVisitSpecializedTypeReference(AbstractTypeReferenceVisitor.java:50)
    at org.eclipse.xtext.xtype.util.AbstractXtypeReferenceVisitor.doVisitComputedTypeReference(AbstractXtypeReferenceVisitor.java:26)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:168)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:1)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.accept(XComputedTypeReferenceImplCustom.java:27)
    at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitor.visit(AbstractTypeReferenceVisitor.java:34)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.toLightweightReference(LightweightTypeReferenceFactory.java:83)
    at org.eclipse.xtext.xbase.typesystem.references.StandardTypeReferenceOwner.toLightweightTypeReference(StandardTypeReferenceOwner.java:117)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes.doGetDeclaredType(ResolvedTypes.java:994)
    at org.eclipse.xtext.xbase.typesystem.internal.StackedResolvedTypes.doGetDeclaredType(StackedResolvedTypes.java:279)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes.doGetActualType(ResolvedTypes.java:957)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes.getActualType(ResolvedTypes.java:945)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.getDeclaredType(AbstractLinkingCandidate.java:610)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.getDeclaredType(ResolvedFeature.java:276)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.applyToComputationState(AbstractLinkingCandidate.java:288)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.applyToComputationState(ResolvedFeature.java:121)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer._computeTypes(XbaseTypeComputer.java:1036)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer.computeTypes(XbaseTypeComputer.java:99)
    at org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.computeTypes(XbaseWithAnnotationsTypeComputer.java:46)
    at org.eclipse.xtend.core.typesystem.XtendTypeComputer.computeTypes(XtendTypeComputer.java:64)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.doComputeTypes(AbstractTypeComputationState.java:121)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.computeTypes(AbstractTypeComputationState.java:109)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.resolveArgumentType(AbstractLinkingCandidate.java:627)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.resolveArgumentType(ResolvedFeature.java:187)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.computeFixedArityArgumentType(AbstractLinkingCandidate.java:579)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.computeArgumentType(AbstractLinkingCandidate.java:443)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.computeArgumentTypes(AbstractLinkingCandidate.java:430)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.preApply(AbstractLinkingCandidate.java:378)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.applyToComputationState(AbstractLinkingCandidate.java:286)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.applyToComputationState(ResolvedFeature.java:121)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer._computeTypes(XbaseTypeComputer.java:1036)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer.computeTypes(XbaseTypeComputer.java:99)
    at org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.computeTypes(XbaseWithAnnotationsTypeComputer.java:46)
    at org.eclipse.xtend.core.typesystem.XtendTypeComputer.computeTypes(XtendTypeComputer.java:64)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.doComputeTypes(AbstractTypeComputationState.java:121)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.computeTypes(AbstractTypeComputationState.java:109)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer._computeTypes(XbaseTypeComputer.java:460)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer.computeTypes(XbaseTypeComputer.java:105)
    at org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.computeTypes(XbaseWithAnnotationsTypeComputer.java:46)
    at org.eclipse.xtend.core.typesystem.XtendTypeComputer.computeTypes(XtendTypeComputer.java:64)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.doComputeTypes(AbstractTypeComputationState.java:121)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.computeTypes(AbstractTypeComputationState.java:109)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractRootTypeComputationState.computeTypes(AbstractRootTypeComputationState.java:32)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver._computeTypes(DefaultReentrantTypeResolver.java:197)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.computeTypes(DefaultReentrantTypeResolver.java:189)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.computeTypes(LogicalContainerAwareReentrantTypeResolver.java:728)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeDanglingExpressionType(XtendReentrantTypeResolver.java:447)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:430)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:403)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:390)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:380)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.resolve(DefaultReentrantTypeResolver.java:163)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.reentrantResolve(DefaultReentrantTypeResolver.java:139)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.reentrantResolve(CompoundReentrantTypeResolver.java:79)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver$LazyResolvedTypes.resolveTypes(CachingBatchTypeResolver.java:80)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver$2.process(CachingBatchTypeResolver.java:57)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver$2.process(CachingBatchTypeResolver.java:1)
    at org.eclipse.xtext.util.concurrent.IUnitOfWork$Void.exec(IUnitOfWork.java:37)
    at org.eclipse.xtext.util.OnChangeEvictingCache.execWithoutCacheClear(OnChangeEvictingCache.java:129)
    at org.eclipse.xtext.xbase.typesystem.internal.CachingBatchTypeResolver.doResolveTypes(CachingBatchTypeResolver.java:53)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractBatchTypeResolver.resolveTypes(AbstractBatchTypeResolver.java:69)
    at org.eclipse.xtext.xbase.resource.BatchLinkingService.resolveBatched(BatchLinkingService.java:60)
    at org.eclipse.xtext.xbase.resource.BatchLinkingService.resolveBatched(BatchLinkingService.java:41)
    at org.eclipse.xtext.xbase.resource.BatchLinkableResource.getEObject(BatchLinkableResource.java:117)
    at org.eclipse.emf.ecore.resource.impl.ResourceSetImpl.getEObject(ResourceSetImpl.java:223)
    at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:199)
    at org.eclipse.emf.ecore.util.EcoreUtil.resolve(EcoreUtil.java:259)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eResolveProxy(BasicEObjectImpl.java:1477)
    at org.eclipse.xtext.xbase.impl.XAbstractFeatureCallImplCustom.getFeature(XAbstractFeatureCallImplCustom.java:48)
    at org.eclipse.xtext.xbase.impl.XAbstractFeatureCallImplCustom.ensureFeatureLinked(XAbstractFeatureCallImplCustom.java:135)
    at org.eclipse.xtext.xbase.impl.XFeatureCallImplCustom.isPackageFragment(XFeatureCallImplCustom.java:54)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:99)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:206)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:206)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:212)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:206)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:206)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findReferences(ReferenceFinder.java:139)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findReferences(ReferenceFinder.java:125)
    at org.eclipse.xtext.ui.editor.occurrences.DefaultOccurrenceComputer$1.exec(DefaultOccurrenceComputer.java:139)
    at org.eclipse.xtext.ui.editor.occurrences.DefaultOccurrenceComputer$1.exec(DefaultOccurrenceComputer.java:1)
    at org.eclipse.xtext.util.concurrent.CancelableUnitOfWork.exec(CancelableUnitOfWork.java:26)
    at org.eclipse.xtext.resource.OutdatedStateManager.exec(OutdatedStateManager.java:92)
    at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.internalReadOnly(XtextDocument.java:520)
    at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.readOnly(XtextDocument.java:492)
    at org.eclipse.xtext.ui.editor.model.XtextDocument.readOnly(XtextDocument.java:133)
    at org.eclipse.xtext.ui.editor.occurrences.DefaultOccurrenceComputer.createAnnotationMap(DefaultOccurrenceComputer.java:102)
    at org.eclipse.xtext.ui.editor.occurrences.OccurrenceMarker$MarkOccurrenceJob.run(OccurrenceMarker.java:123)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

!ENTRY org.eclipse.core.jobs 4 2 2016-08-03 11:34:01.358
!MESSAGE An internal error occurred during: "Mark Occurrences".
!STACK 0
java.lang.UnsupportedOperationException: TODO: import a functional handle on the type resolution that delegates to the best available (current, but evolving) result
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.reentrantResolve(DefaultReentrantTypeResolver.java:133)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getDelegate(CompoundReentrantTypeResolver.java:108)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getDelegate(CompoundReentrantTypeResolver.java:161)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getActualType(CompoundReentrantTypeResolver.java:153)
    at org.eclipse.xtext.xbase.typesystem.internal.ForwardingResolvedTypes.getActualType(ForwardingResolvedTypes.java:40)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$DemandTypeReferenceProvider.doGetTypReferenceWithAnotherTypeReference(LogicalContainerAwareReentrantTypeResolver.java:200)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$DemandTypeReferenceProvider.doGetTypeReference(LogicalContainerAwareReentrantTypeResolver.java:192)
    at org.eclipse.xtext.xbase.typesystem.util.AbstractReentrantTypeReferenceProvider.getTypeReference(AbstractReentrantTypeReferenceProvider.java:28)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.getEquivalent(XComputedTypeReferenceImplCustom.java:46)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:165)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:1)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.accept(XComputedTypeReferenceImplCustom.java:27)
    at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitor.visit(AbstractTypeReferenceVisitor.java:34)
    at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitor.doVisitSpecializedTypeReference(AbstractTypeReferenceVisitor.java:50)
    at org.eclipse.xtext.xtype.util.AbstractXtypeReferenceVisitor.doVisitComputedTypeReference(AbstractXtypeReferenceVisitor.java:26)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:168)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.doVisitComputedTypeReference(LightweightTypeReferenceFactory.java:1)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.accept(XComputedTypeReferenceImplCustom.java:27)
    at org.eclipse.xtext.common.types.util.AbstractTypeReferenceVisitor.visit(AbstractTypeReferenceVisitor.java:34)
    at org.eclipse.xtext.xbase.typesystem.references.LightweightTypeReferenceFactory.toLightweightReference(LightweightTypeReferenceFactory.java:83)
    at org.eclipse.xtext.xbase.typesystem.references.StandardTypeReferenceOwner.toLightweightTypeReference(StandardTypeReferenceOwner.java:117)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes.doGetDeclaredType(ResolvedTypes.java:994)
    at org.eclipse.xtext.xbase.typesystem.internal.StackedResolvedTypes.doGetDeclaredType(StackedResolvedTypes.java:279)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes.doGetActualType(ResolvedTypes.java:957)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedTypes.getActualType(ResolvedTypes.java:945)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.getDeclaredType(AbstractLinkingCandidate.java:610)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.getDeclaredType(ResolvedFeature.java:276)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.applyToComputationState(AbstractLinkingCandidate.java:288)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.applyToComputationState(ResolvedFeature.java:121)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer._computeTypes(XbaseTypeComputer.java:1036)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer.computeTypes(XbaseTypeComputer.java:99)
    at org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.computeTypes(XbaseWithAnnotationsTypeComputer.java:46)
    at org.eclipse.xtend.core.typesystem.XtendTypeComputer.computeTypes(XtendTypeComputer.java:64)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.doComputeTypes(AbstractTypeComputationState.java:121)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.computeTypes(AbstractTypeComputationState.java:109)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.resolveArgumentType(AbstractLinkingCandidate.java:627)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.resolveArgumentType(ResolvedFeature.java:187)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.computeFixedArityArgumentType(AbstractLinkingCandidate.java:579)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.computeArgumentType(AbstractLinkingCandidate.java:443)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.computeArgumentTypes(AbstractLinkingCandidate.java:430)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.preApply(AbstractLinkingCandidate.java:378)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractLinkingCandidate.applyToComputationState(AbstractLinkingCandidate.java:286)
    at org.eclipse.xtext.xbase.typesystem.internal.ResolvedFeature.applyToComputationState(ResolvedFeature.java:121)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer._computeTypes(XbaseTypeComputer.java:1036)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer.computeTypes(XbaseTypeComputer.java:99)
    at org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.computeTypes(XbaseWithAnnotationsTypeComputer.java:46)
    at org.eclipse.xtend.core.typesystem.XtendTypeComputer.computeTypes(XtendTypeComputer.java:64)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.doComputeTypes(AbstractTypeComputationState.java:121)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.computeTypes(AbstractTypeComputationState.java:109)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer._computeTypes(XbaseTypeComputer.java:460)
    at org.eclipse.xtext.xbase.typesystem.computation.XbaseTypeComputer.computeTypes(XbaseTypeComputer.java:105)
    at org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsTypeComputer.computeTypes(XbaseWithAnnotationsTypeComputer.java:46)
    at org.eclipse.xtend.core.typesystem.XtendTypeComputer.computeTypes(XtendTypeComputer.java:64)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.doComputeTypes(AbstractTypeComputationState.java:121)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractTypeComputationState.computeTypes(AbstractTypeComputationState.java:109)
    at org.eclipse.xtext.xbase.typesystem.internal.AbstractRootTypeComputationState.computeTypes(AbstractRootTypeComputationState.java:32)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver._computeTypes(DefaultReentrantTypeResolver.java:197)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.computeTypes(DefaultReentrantTypeResolver.java:189)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver.computeTypes(LogicalContainerAwareReentrantTypeResolver.java:728)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeDanglingExpressionType(XtendReentrantTypeResolver.java:447)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:430)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:403)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:390)
    at org.eclipse.xtend.core.typesystem.XtendReentrantTypeResolver.computeTypes(XtendReentrantTypeResolver.java:380)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.resolve(DefaultReentrantTypeResolver.java:163)
    at org.eclipse.xtext.xbase.typesystem.internal.DefaultReentrantTypeResolver.reentrantResolve(DefaultReentrantTypeResolver.java:139)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getDelegate(CompoundReentrantTypeResolver.java:108)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getDelegate(CompoundReentrantTypeResolver.java:161)
    at org.eclipse.xtext.xbase.typesystem.internal.CompoundReentrantTypeResolver.getActualType(CompoundReentrantTypeResolver.java:153)
    at org.eclipse.xtext.xbase.typesystem.internal.ForwardingResolvedTypes.getActualType(ForwardingResolvedTypes.java:40)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$DemandTypeReferenceProvider.doGetTypReferenceWithAnotherTypeReference(LogicalContainerAwareReentrantTypeResolver.java:200)
    at org.eclipse.xtext.xbase.typesystem.internal.LogicalContainerAwareReentrantTypeResolver$DemandTypeReferenceProvider.doGetTypeReference(LogicalContainerAwareReentrantTypeResolver.java:192)
    at org.eclipse.xtext.xbase.typesystem.util.AbstractReentrantTypeReferenceProvider.getTypeReference(AbstractReentrantTypeReferenceProvider.java:28)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImplCustom.getEquivalent(XComputedTypeReferenceImplCustom.java:46)
    at org.eclipse.xtext.common.types.impl.JvmSpecializedTypeReferenceImpl.eGet(JvmSpecializedTypeReferenceImpl.java:143)
    at org.eclipse.xtext.xtype.impl.XComputedTypeReferenceImpl.eGet(XComputedTypeReferenceImpl.java:115)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1011)
    at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eGet(BasicEObjectImpl.java:1003)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:197)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:212)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:212)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findLocalReferencesFromElement(ReferenceFinder.java:206)
    at org.eclipse.xtend.core.findReferences.XtendReferenceFinder.findLocalReferencesFromElement(XtendReferenceFinder.java:105)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findReferences(ReferenceFinder.java:139)
    at org.eclipse.xtext.findReferences.ReferenceFinder.findReferences(ReferenceFinder.java:125)
    at org.eclipse.xtext.ui.editor.occurrences.DefaultOccurrenceComputer$1.exec(DefaultOccurrenceComputer.java:139)
    at org.eclipse.xtext.ui.editor.occurrences.DefaultOccurrenceComputer$1.exec(DefaultOccurrenceComputer.java:1)
    at org.eclipse.xtext.util.concurrent.CancelableUnitOfWork.exec(CancelableUnitOfWork.java:26)
    at org.eclipse.xtext.resource.OutdatedStateManager.exec(OutdatedStateManager.java:92)
    at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.internalReadOnly(XtextDocument.java:520)
    at org.eclipse.xtext.ui.editor.model.XtextDocument$XtextDocumentLocker.readOnly(XtextDocument.java:492)
    at org.eclipse.xtext.ui.editor.model.XtextDocument.readOnly(XtextDocument.java:133)
    at org.eclipse.xtext.ui.editor.occurrences.DefaultOccurrenceComputer.createAnnotationMap(DefaultOccurrenceComputer.java:102)
    at org.eclipse.xtext.ui.editor.occurrences.OccurrenceMarker$MarkOccurrenceJob.run(OccurrenceMarker.java:123)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

Key binding conflicts between embeddedTextEditorScope and textEditorScope

When using an embedded Xtext editor many key binding conflicts are reported by Eclipse (for example, when running plugin tests), even when not defining any custom bindings for the embedded editor or for the main Xtext editor.

Conflicts are between org.eclipse.xtext.ui.embeddedTextEditorScope and org.eclipse.ui.textEditorScope (see below).

A short excerpt from the log:

!ENTRY org.eclipse.jface 2 0 2016-06-23 11:34:46.531
!MESSAGE Keybinding conflicts occurred.  They may interfere with normal accelerator operation.
!SUBENTRY 1 org.eclipse.jface 2 0 2016-06-23 11:34:46.531
!MESSAGE A conflict occurred for CTRL+K:
Binding(CTRL+K,
    ParameterizedCommand(Command(org.eclipse.ui.edit.findNext,Find Next,
        Find next item,
        Category(org.eclipse.ui.category.edit,Edit,null,true),
        org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@7f096ff2,
        ,,true),null),
    org.eclipse.ui.defaultAcceleratorConfiguration,
    org.eclipse.xtext.ui.embeddedTextEditorScope,,,system)
Binding(CTRL+K,
    ParameterizedCommand(Command(org.eclipse.ui.edit.findNext,Find Next,
        Find next item,
        Category(org.eclipse.ui.category.edit,Edit,null,true),
        org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@7f096ff2,
        ,,true),null),
    org.eclipse.ui.defaultAcceleratorConfiguration,
    org.eclipse.ui.textEditorScope,,,system)
!SUBENTRY 1 org.eclipse.jface 2 0 2016-06-23 11:34:46.532
!MESSAGE A conflict occurred for INSERT:
Binding(INSERT,
    ParameterizedCommand(Command(org.eclipse.ui.edit.text.toggleOverwrite,Toggle Overwrite,
        Toggle overwrite mode,
        Category(org.eclipse.ui.category.textEditor,Text Editing,Text Editing Commands,true),
        org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@5ac63cae,
        ,,true),null),
    org.eclipse.ui.defaultAcceleratorConfiguration,
    org.eclipse.xtext.ui.embeddedTextEditorScope,,,system)
Binding(INSERT,
    ParameterizedCommand(Command(org.eclipse.ui.edit.text.toggleOverwrite,Toggle Overwrite,
        Toggle overwrite mode,
        Category(org.eclipse.ui.category.textEditor,Text Editing,Text Editing Commands,true),
        org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@5ac63cae,
        ,,true),null),
    org.eclipse.ui.defaultAcceleratorConfiguration,
    org.eclipse.ui.textEditorScope,,,system)

(goes on ...)

Xtext should ignore files in Gradle 'build' folders

Buildship seems to hide the 'build' folder per default in the Eclipse Package Explorer.
The Xtext incremental Builder, however, seems to process files from there and potentially creates validation error markers. This is very confusing for users, because the markers reside on files that are not visible in the Package Explorer.

NullPointerException when adding a empty directory to an IDEA module

A bit of context first.

I'm developing a language and an application using that language with the following tools:

IDEA 2016.2.4
Xtext IDEA plugin 2.10
Gradle 3.0

The language is called "flax".
The application is called "cactus".
I encountered this issue while trying to provide a library in the flax jar.

Minimal steps to reproduce:

  1. Create an XText project with the IDEA wizard
Name: org.septentrio.sandbox.flax.Flax
Extension: flax
Project name: flax
Project location: .../flax
  1. Modify the language to include at least one cross-reference
grammar com.septentrio.sandbox.flax.Flax with org.eclipse.xtext.common.Terminals
generate flax "http://www.septentrio.com/sandbox/flax/Flax"
Model:
  classes+=Class*;
Class:
  'class' name=ID ('extends' parent=[Class])?;
  1. Modify the flax.parent/flax.idea/build.gradle to use IDEA version '162.2032.8'
  2. Execute the runIdea Gradle task
  3. In the newly launched IDEA, create a new empty project (this is cactus...)
  4. Create a new module and the Flax facet
  5. In the source folder of the module create a new lib.flax file
class A extends B
  1. As expected B is flagged as an undefined symbol
  2. Create an empty folder and add it to the module dependency
  3. NullPointerException is repeatedly thrown by XText

I believe this issue prevents me from providing a custom library together with my language. I have tried other methods such as packaging an extra library file in a JAR and adding that JAR to the dependencies of the cactus module but the same exception would be thrown.

Is there a way to provide a custom library when developing XText languages in IDEA?

Consider getting rid of "TemporaryFolder" classes

In several places we have copies of org.junit.rules.TemporaryFolder.

The JavaDoc of our copies says

/**
 * Basically copied from {@link org.junit.rules.TemporaryFolder}
 * which looks different in different junit versions and does not reset
 * the private field {@link #folder} on the {@link #after()} event.
 * 
 * Another change is that the folder is only created on demand.
 * 
 * The TemporaryFolder Rule allows creation of files and folders that are
 * guaranteed to be deleted when the test method finishes (whether it passes or
 * fails):
 **/

We should evaluate if the mentioned reasons still justify having copies of that class. This involves determining what's the oldest JUnit version we need to be compatible with.

Improve handling of generated code for Committers and Contributors

Currently we're checking generated code into the git repository. That's usually

  • src-gen // generated by MWE2
  • xtend-gen // generated by an Eclipse Incremental Builder

Having the generated code in our git repo allows us to

  • easily notice regression bugs in the our code generators. That's important, since we're responsible for the generators proper behavior.
  • fast branch switching in a developer's git working copy.
  • allows for easy on-boarding of contributors, since no local execution of generators is necessary
  • protects us from accidentally working with outdated generated code

On the downside:

  • generated code makes reviewing PRs very unpleasant and probably decreases the quality of reviews.
  • staging generated code when crafting commits is extra effort and annoying

Did I miss some points?

Possibly we could consider to not check xtend-gen folders into git because the Eclipse Incremental Builder will generated them on-the-fly.

Type mismatch: cannot convert from List<? extends Type> to Iterable<Type>

The following code does not work

import java.util.List;

import com.google.common.collect.Lists;

public class Helper {

    public static class Type {

    }

    public static List<? extends Type> doit(Object o) {
        return Lists.newArrayList();
    }

}
import demo.Helper.Type

import static extension demo.Helper.*

class Demo {

    def static void main(String[] args) {
        xxxx(null,null) [
            doit(null)?.head
        ]
    }

    def static xxxx(String a, String b, ()=>Type typeProducer) {

    }

}

it works in older Xtext Versions (2.6.x)

Improve synthetic references support

Xtext allows to install synthetic references.

In the case if a synthetic reference is backed up by a model substring, e.g. a reference to a Java type inside a string token, then it would be nice to have good Editor support for it, ideally indistinguishable from support of references in the primary AST, e.g. Editor actions, like navigation, find references, content assist and so on.

Such services like EObjectAtOffsetHelper and ILocationInFileProvider could take them into account.

Also it would be nice to have API enabling contribution of such references based on the semantic model by language extensions (plugins).

Create an individual p2 repository per subproject

Currently the Xtext subprojects (xtext-core, xtext-eclipse, etc.) have very different ways to publish their results: xtext-eclipse and xtext-xtend use p2 repositories, all others use Maven repositories. As a consequence, we need an umbrella build that aggregates the build results from all subprojects and assembles a p2 repository in order to consume any part of Xtext using a target platform.

We would like to change this structure such that each subproject is self-contained both from the Maven artifacts perspective and from the p2 artifacts perspective. This means that the subprojects with a Gradle build need to trigger Tycho for assembling a local p2 repository that can be consumed in a similar way as the already existing local Maven repositories. This is already done in LSP4J, for example. We will still need an umbrella build to create the cross-subproject features such as Xtext SDK. Regarding the Xtext download space on Eclipse, we could either deploy the individual p2 repositories and let them reference each other, or let the umbrella build create a single p2 repository with all features and deploy that one.

A prerequisite for this further restructuring is that we create at least one new Eclipse feature in each subproject such that each feature contains only plug-ins from its source subproject and references features from upstream subprojects. The old features, e.g. Xtext SDK, would be changed so they no longer contain features and plug-ins, but reference features.

To summarize the main consequences:

++ By referencing the local p2 repositories of the Jenkins jobs, you will be able to refresh a target platform in your Xtext-based project immediately after a build has finished on one of the Jenkins jobs. No triggering of additional umbrella builds will be necessary.

– – The restructuring of the Eclipse features might make it more complicated to update to Xtext 2.11 for existing Eclipse users. In some cases they might have to uninstall the old features and install the new ones instead of directly updating.

If you have worries regarding this feature and p2 restructuring, please comment here.

Xtend sources: Use operators === and !== when comparing with null

Many Xtend sources show the warning

The operator '==' should be replaced by '===' when null is one of the arguments.
The operator '!=' should be replaced by '!==' when null is one of the arguments.

The usage of the alternative operators lead to slightly optimized Java sources.

Existing Xtend sources are to be refactored to use the alternative operator to fix these warnings.

[gradle] Project import changes order of build commands

When importing Xtext project with Buildship, the resulting .project files exchange the order of the build commands. The Xtext builder is added after the Java builder, but it must be before.

screenshot 119

The current setting java-compiler-settings.gradle files adds the xtextBuilder with

buildCommand 'org.eclipse.xtext.ui.shared.xtextBuilder'

This will append the command, so the order is wrong.

The build command can be added in front with

buildCommands.add(0,new org.gradle.plugins.ide.eclipse.model.BuildCommand('org.eclipse.xtext.ui.shared.xtextBuilder'))

The order is now that the xtextBuilder is before javabuilder, which can be verified by console output by adding

println(project.name+": "+project.buildCommands.collect{bc->bc.name})

This will result in the output:

org.eclipse.xtext: [org.eclipse.xtext.ui.shared.xtextBuilder, org.eclipse.jdt.core.javabuilder]
org.eclipse.xtext.ide: [org.eclipse.xtext.ui.shared.xtextBuilder, org.eclipse.jdt.core.javabuilder]
org.eclipse.xtext.ide.tests: [org.eclipse.xtext.ui.shared.xtextBuilder, org.eclipse.jdt.core.javabuilder]
org.eclipse.xtext.testing: [org.eclipse.xtext.ui.shared.xtextBuilder, org.eclipse.jdt.core.javabuilder]
org.eclipse.xtext.testlanguages: [org.eclipse.xtext.ui.shared.xtextBuilder, org.eclipse.jdt.core.javabuilder]
org.eclipse.xtext.testlanguages.ide: [org.eclipse.xtext.ui.shared.xtextBuilder, org.eclipse.jdt.core.javabuilder]
org.eclipse.xtext.tests: [org.eclipse.xtext.ui.shared.xtextBuilder, org.eclipse.jdt.core.javabuilder]
org.eclipse.xtext.util: [org.eclipse.xtext.ui.shared.xtextBuilder, org.eclipse.jdt.core.javabuilder]
org.eclipse.xtext.xtext.generator: [org.eclipse.xtext.ui.shared.xtextBuilder, org.eclipse.jdt.core.javabuilder]
org.eclipse.xtext.xtext.wizard: [org.eclipse.xtext.ui.shared.xtextBuilder, org.eclipse.jdt.core.javabuilder]

CONFIGURE SUCCESSFUL

The same problem exists when calling gradle eclipse from command-line:
screenshot 126

Create Umbrella Repository

The main Xtext repository contains some releng projects. Further, we need a composite build in order to be able to resolve cross-repo dependencies. The old main repository seems not to be the right place, since it is quite huge and it is not possible to make a shallow clone with Oomph/JGit at this moment.

Therefore Releng stuff and maybe more (docs etc.) should be collected in a new umbrella repository. A name has not been decided yet.

This issue is for the decision of the repository's name and the actual creation. Further actions to populate it should be handled in a separate issue.

See eclipse/xtext-eclipse#118 for more details.

Single line comments after code removes newlines when formatted

Having a single line comment after some code removes newlines when the code is formatted.
For example formatting:

def method() {// test

    val test = 0
}

Results in:

def method() {// test
    val test = 0
}

Whilst formatting:

def method() {

    val test = 0
}

Results in:

def method() {

    val test = 0
}

I fixed this problem in my case by adding the following code after this line.
I am not certain that this is the right place to fix it though.

// The amount of newlines in this space, sometimes a newline gets caught in a single line comment before this hidden region
val actualNewlines = region.getLineCount() - 1
// Since the newline got caught, newLineCount is one too small
if(actualNewlines > 0 && trailingNewLinesOfPreviousRegion > 0) {
    if (formatting.newLineMin !== null && actualNewlines + trailingNewLinesOfPreviousRegion < formatting.newLineMin) {
        newLineCount = formatting.newLineMin - trailingNewLinesOfPreviousRegion
    } else if (formatting.newLineMax !== null && actualNewlines + trailingNewLinesOfPreviousRegion > formatting.newLineMax) {
        newLineCount = formatting.newLineMax - trailingNewLinesOfPreviousRegion
    } else {
        // We were within range, so just don't mess up our existing newlines
        newLineCount = actualNewlines
    }
}

My solution assumes that trailingNewLinesOfPreviousRegion is only different from zero in the case that a single line comment precedes the current hidden region.

When we arrive at the replacement, newLineCount will be off by one because one of the newlines resides in the previous single line comment.

Add Generate-Button to Webview

I think adding a generate button to the webview which allows to generate and download a zip-file containing all generated files would be a nice addition. Currently the webview seems like a good POC but doesn't offer much functionality.
We currently have a working example in our project following this post by Christian Dietrich and in our opinion works good enough to be a welcome addition to this project.

Splitted repositories do not contain release tags

During the split release tags got lost. It is important to have these tags to be able to compare sources against a certain release, which is important to track changes for bugs that were reported for a past release.

The release tags https://github.com/eclipse/xtext/tags should be available for the other repos when appropriate. I think the release tags should be sufficient, old milestones could be ignored.

Extensible Languages

@meysholdt pointed out that #2610 can be considered as a special case of a language extension by the 3rd party plugin, for instance, by deriving secondary node/semantic models in the context of the primary or other secondary models and then enriching language services based on them.

Currently only limitted things are possible:

  • to register custom validators with EMF
  • to do it yourself, create a language and define custom extension points

Taking in the account latter, one can argue that even if it is possible nobody does it now. Nobody does it with Xtext just because it is a big investment for one language, but there are example like roslyn, TypeScript and IntelliJ IDEA. Roslyn and TypeScript let extensions provide new language features, e.g. Quick Fixes, Completions and so on. IntelliJ does better in addition it allows extensions interconnect semantic models with new references. It enables very easy way to improve the user experience: a simple fact of adding a reference improves almost all language's features , e.g. navigation, completion, validation, refactorings and so on. We can do even better with derived models: not only allow deriving of references but additional models providing more context specific insight in the source code.

Consider the following applications:

  • cheap way to improve the user experience and tailor a language to the context, used technologies, frameworks, libraries and so on: for instance add references to internalized properties from string
  • if one picks Xtext to build a language server then users of such language can easily build linters
  • semantic language composition: for instance find SQL strings in the primary model and derive secondary models for them

Rename Refactoring is order dependent

Using

Model: {Model}
    elements+=Element*
    refs+=Ref*
;

Element:
    'element' name=ID
;

Ref:
    "ref" ref=[Element]
;   

and

element A 
element B 
ref A 
ref B

refactoring behaves differently if i rename A to B or i rename B to A.

since the scoping behaviour behind this is intended eclipse/xtext-core#152 the refactoring must do the checks differently

[generator][trace] LeafIterator cannot handle zero length TraceRegions

using xtext 2.8.4

the LeafIterator.computeNext() method may run into a infinite loop if there is a trace region with length zero.

if current.offset == expectedOffset it will return firstLeafOfCurrent will be returned.
this does not advance expectedOffset since the length is zero.

i assume the zero length based regions should be filtered out before (or never been created) or the iterator should be able to handle them.

[LanguageServer] Extract standalone bindings from ServerModule

We should create a StandaloneServerModule that extends ServerModule and move all bindings that are only valid in the standalone case to the new class. For example,

bind(IResourceServiceProvider.Registry).toProvider(ResourceServiceProviderServiceLoader)

does not work in all environments. Maybe it would make sense to use AbstractGenericModule so bindings can be overridden.

Furthermore, we should consider creating the executors in a way that they can be shut down in a proper lifecycle, see eclipse/xtext-core#127.

Auto format error

Using the project created by with wizard with a custom grammar and using a file with context

module
end_module

in my plug in. I get a list list of exception, it is not exactly the same of the post [http://stackoverflow.com/questions/40009492/xtext-formatting-exception?noredirect=1#comment67331354_40009492](on stack overflow) but looks for me like the same error.

I get the error when I auto format, ctrl+shift+f

auto_format_log.txt

auto_format_error.zip

cannot convert X to Enum

In a project we have inferred Enum classes extending an interface (Xtext language extending Xbase; model inferrer produces enum type adding an interface supertype). Further we have a method expecting any Enum as parameter (Enum<?> param). A call from an Xtend class to that method passing an inferred Enum fails to compile with the error "cannot convert to Enum". A call from the Xtend class passing an identical hand written Java-Enum (without the Xbase model in the background) succeeds.

This problem is present only in the IDE, a maven build of the project succeeds without compilation errors.

Reproducing the problem with Xtend alone seems not to be possible as the grammar does not allow defining an enum that implements an interface. The problem exists in Xtend 2.8 and was reproduced with 2.9 and 2.10.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.