From 8cf2cb1bcb40c1b8e58099e2aa72dbf24948efc9 Mon Sep 17 00:00:00 2001 From: Christian Dietrich Date: Mon, 5 Nov 2018 15:36:00 +0100 Subject: [PATCH 01/18] preparation 2.16 release notes Signed-off-by: Christian Dietrich --- .../releasenotes/2018-12-04-version-2-16-0.md | 22 +++++++++++++++++++ .../releasenotes/2018-12-04-version-2-16-0.md | 20 +++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md create mode 100644 xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md new file mode 100644 index 00000000000..392b2b0dd19 --- /dev/null +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -0,0 +1,22 @@ +--- +layout: post +title: Xtend 2.16.0 Release Notes +date: 2018-12-04 +categories: releasenotes +published: false +--- + +This release focuses on stability, performance and the integration in Eclipse 2018-12. + +## Fixed Issues + +As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a TODO issues and almost TODO pull requests have made it into this release. For further details please refer to the following lists: + + +- [Fixed GitHub issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) + +- [Closed Pull Requests](https://github.com/search?utf8=%E2%9C%93&q=is%3Apr+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) + +- [Fixed Eclipse Bugzilla tickets](https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&classification=Modeling&classification=Tools&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&f0=OP&f1=OP&f3=CP&f4=CP&known_name=Xtext%202.16&list_id=16618269&product=TMF&product=Xtend&query_based_on=Xtext%202.16&query_format=advanced&status_whiteboard=v2.16&status_whiteboard_type=allwordssubstr) + + diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md new file mode 100644 index 00000000000..ed7bfbf4c7e --- /dev/null +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -0,0 +1,20 @@ +--- +layout: post +title: Xtext 2.16.0 Release Notes +date: 2018-12-04 +categories: releasenotes +published: false +--- + +This release focusses on stability, performance and the integration in Eclipse 2018-12. + +## Fixed Issues + +As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a 100 issues and almost 300 pull requests have made it into this release. For further details please refer to the following lists: + +- [Fixed GitHub issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) + +- [Closed Pull Requests](https://github.com/search?utf8=%E2%9C%93&q=is%3Apr+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) + +- [Fixed Eclipse Bugzilla tickets](https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&classification=Modeling&classification=Tools&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&f0=OP&f1=OP&f3=CP&f4=CP&known_name=Xtext%202.16&list_id=16618269&product=TMF&product=Xtend&query_based_on=Xtext%202.16&query_format=advanced&status_whiteboard=v2.16&status_whiteboard_type=allwordssubstr) + From 545d14adb79b9e0f281bd0d28d2441be25dc34b4 Mon Sep 17 00:00:00 2001 From: Christian Dietrich Date: Tue, 6 Nov 2018 11:27:10 +0100 Subject: [PATCH 02/18] [eclipse/xtext-lib#131] announce deprecation of xbase and xtend gwt libs Signed-off-by: Christian Dietrich --- .../_posts/releasenotes/2018-12-04-version-2-16-0.md | 5 +++++ .../_posts/releasenotes/2018-12-04-version-2-16-0.md | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 392b2b0dd19..1f3508e16fa 100644 --- a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -8,6 +8,11 @@ published: false This release focuses on stability, performance and the integration in Eclipse 2018-12. +## BOM + +## Deprecation of GWT +We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). + ## Fixed Issues As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a TODO issues and almost TODO pull requests have made it into this release. For further details please refer to the following lists: diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index ed7bfbf4c7e..62c497513d2 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -8,6 +8,11 @@ published: false This release focusses on stability, performance and the integration in Eclipse 2018-12. +## BOM + +## Deprecation of GWT +We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). + ## Fixed Issues As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a 100 issues and almost 300 pull requests have made it into this release. For further details please refer to the following lists: From c212d33d76b4c5a930f84fda99b8d1965d2136b2 Mon Sep 17 00:00:00 2001 From: Christian Dietrich Date: Tue, 20 Nov 2018 10:37:00 +0100 Subject: [PATCH 03/18] more releasenotes Signed-off-by: Christian Dietrich --- .../_posts/releasenotes/2018-12-04-version-2-16-0.md | 5 +++-- .../_posts/releasenotes/2018-12-04-version-2-16-0.md | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 1f3508e16fa..ad8ea97bfba 100644 --- a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -8,11 +8,12 @@ published: false This release focuses on stability, performance and the integration in Eclipse 2018-12. -## BOM - ## Deprecation of GWT We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). +## Outlook for 2.17 +Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17 + ## Fixed Issues As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a TODO issues and almost TODO pull requests have made it into this release. For further details please refer to the following lists: diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 62c497513d2..0085839689b 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -8,11 +8,12 @@ published: false This release focusses on stability, performance and the integration in Eclipse 2018-12. -## BOM - ## Deprecation of GWT We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). +## Outlook for 2.17 +Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17 + ## Fixed Issues As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a 100 issues and almost 300 pull requests have made it into this release. For further details please refer to the following lists: From c9650d5617aea247d95d8420cc2cb6de15f07b33 Mon Sep 17 00:00:00 2001 From: Karsten Thoms Date: Thu, 22 Nov 2018 01:31:08 +0100 Subject: [PATCH 04/18] 2.16 release notes Signed-off-by: Karsten Thoms --- .../releasenotes/2018-12-04-version-2-16-0.md | 4 + .../releasenotes/2018-12-04-version-2-16-0.md | 103 +++++++++++++++++- 2 files changed, 106 insertions(+), 1 deletion(-) diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index ad8ea97bfba..3c4a8907637 100644 --- a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -8,6 +8,10 @@ published: false This release focuses on stability, performance and the integration in Eclipse 2018-12. +## Triple-equals quickfix is now a multifix + +Warnings of type `The operator '!=' should be replaced by '!==' when null is one of the arguments.` were only possible to be fixed one by one. The quickfix has been extended to allow the fix of multiple issues at once. + ## Deprecation of GWT We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 0085839689b..4156c7e0052 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -6,7 +6,108 @@ categories: releasenotes published: false --- -This release focusses on stability, performance and the integration in Eclipse 2018-12. +This release focusses on stability, performance and the integration in Eclipse 2018-12. + +## Java 11 Preparation + +Java 11 has been released in September and [Xtext is in preparation](https://github.com/eclipse/xtext/issues/1182) for full support. There are many components Xtext relies on which need to work with Java 11, and not all could be integrated so far, or are not available themselves yet. Thus we schedule Java 11 support for release 2.17. However, some preparational work has already been included into Xtext 2.16: + +* ASM 7: The ASM bytecode analysis and manipulation framework has been upgraded to the latest version 7.0. +* Tycho 1.3: Tycho 1.3 is built against latest JDT, which is required to use Java 11. All projects and wizards have been upgraded to Tycho 1.3. +* Gradle: Xtext 2.16 builds against and uses Gradle 4.10.2 now. +* xtext-maven-plugin: The plugin has been updated to support the Java 11 source level. + +## Testing + +### Quickfix testing API + +A new base class [`AbstractQuickfixTest`](https://github.com/eclipse/xtext-eclipse/blob/master/org.eclipse.xtext.ui.tests/tests/org/eclipse/xtext/ui/tests/editor/quickfix/AbstractQuickfixTest.java) allows the definition of test cases for quickfixes. Quickfixes can be tested by using the method + +``` +public void testQuickfixesOn(CharSequence it, String issueCode, Quickfix... quickfixes) +``` + +This method takes a DSL text as first argument. The second argument is the issue code of the issue that can be fixed by quickfixes. Finally the third argument is an array of `Quickfix` testing instances, which defines a tuple of a label, the quickfix description and the expected resulting DSL text after appliance. + +``` + @Data + protected static class Quickfix { + String label + String description + String result + } +``` + +The Xtext example projects Domainmodel, Statemachine and Home Automation are extended by such tests to demonstrate its usage. For example, the Domainmodel Example's quickfix test looks like this: + +``` +class QuickfixTest extends AbstractQuickfixTest { + + @Before def void setup() { + /* + * Xbase-based languages require java project + */ + projectName.createJavaProject + } + + @Test def fix_invalid_entity_name() { + ''' + entity blog { + } + '''.testQuickfixesOn(INVALID_TYPE_NAME, new Quickfix("Capitalize name", "Capitalize name of 'blog'", ''' + entity Blog { + } + ''')) + } + + @Test def fix_invalid_property_name() { + ''' + entity Blog { + Title : String + } + '''.testQuickfixesOn(INVALID_FEATURE_NAME, new Quickfix("Uncapitalize name", "Uncapitalize name of 'Title'", ''' + entity Blog { + title : String + + } + ''')) + } + + @Test def fix_invalid_operation_name() { + ''' + entity Blog { + title : String + op SetTitle(String title) {} + } + '''.testQuickfixesOn(INVALID_FEATURE_NAME, new Quickfix("Uncapitalize name", "Uncapitalize name of 'SetTitle'", ''' + entity Blog { + title : String + op setTitle(String title) {} + + } + ''')) + } +}} +``` + + +# Language Server Support + +## Upgrade to Eclipse LSP4J 0.6.0 + +Xtext now integrates Eclipse LSP4J version 0.6.0. + +## Configurable Server Exit Behavior + +The default behavior on receiving the `exit` command of Xtext language servers was to call `System.exit` and thus terminate the JVM. While this is desirable when a host process is shut down (like termination of the editing tool) it harms [scenarios](https://github.com/eclipse/xtext-core/issues/885) where the language server and client run on the same JVM. + +To support both, the `exit` command is now delegated to an instance of the introduced interface `ILanguageServerShutdownAndExitHandler`. Its default implementation `ILanguageServerShutdownAndExitHandler.DefaultImpl` still calls `System.exit()`. For embedded scenarios the interface should be bound to `ILanguageServerShutdownAndExitHandler.NullImpl` instead, which ignores the exit request and keeps the JVM alive. + +# Minimal Target Platform + +The Eclipse Platform has changed the release cadence after its Photon release (4.9) to a quartely release cycle. This increases the speed of changes to the platform that Xtext relies on and makes it hard for projects like Xtext that deeply integrate with the platform to support a wide range of relases. Therefore it was decided to cut off the supported Eclipse releases and require Eclipse 4.7.3a (Oxygen.3a, latest Oxygen release) at least. + +This has now been enforced by constraining the lower bound of all bundles of the Eclipse Platform. As a consequence, Xtext 2.16 will not be possible to install on an earlier Eclipse release. ## Deprecation of GWT We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). From 01db399b9582888e3523867db4a5801a01883446 Mon Sep 17 00:00:00 2001 From: Karsten Thoms Date: Thu, 22 Nov 2018 01:31:08 +0100 Subject: [PATCH 05/18] Added LSP Hierarchical Document Symbols Signed-off-by: Karsten Thoms --- .../releasenotes/2018-12-04-version-2-16-0.md | 4 + .../releasenotes/2018-12-04-version-2-16-0.md | 107 +++++++++++++++++- 2 files changed, 110 insertions(+), 1 deletion(-) diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index ad8ea97bfba..3c4a8907637 100644 --- a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -8,6 +8,10 @@ published: false This release focuses on stability, performance and the integration in Eclipse 2018-12. +## Triple-equals quickfix is now a multifix + +Warnings of type `The operator '!=' should be replaced by '!==' when null is one of the arguments.` were only possible to be fixed one by one. The quickfix has been extended to allow the fix of multiple issues at once. + ## Deprecation of GWT We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 0085839689b..b20c0779f5f 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -6,7 +6,112 @@ categories: releasenotes published: false --- -This release focusses on stability, performance and the integration in Eclipse 2018-12. +This release focusses on stability, performance and the integration in Eclipse 2018-12. + +## Java 11 Preparation + +Java 11 has been released in September and [Xtext is in preparation](https://github.com/eclipse/xtext/issues/1182) for full support. There are many components Xtext relies on which need to work with Java 11, and not all could be integrated so far, or are not available themselves yet. Thus we schedule Java 11 support for release 2.17. However, some preparational work has already been included into Xtext 2.16: + +* ASM 7: The ASM bytecode analysis and manipulation framework has been upgraded to the latest version 7.0. +* Tycho 1.3: Tycho 1.3 is built against latest JDT, which is required to use Java 11. All projects and wizards have been upgraded to Tycho 1.3. +* Gradle: Xtext 2.16 builds against and uses Gradle 4.10.2 now. +* xtext-maven-plugin: The plugin has been updated to support the Java 11 source level. + +## Testing + +### Quickfix testing API + +A new base class [`AbstractQuickfixTest`](https://github.com/eclipse/xtext-eclipse/blob/master/org.eclipse.xtext.ui.tests/tests/org/eclipse/xtext/ui/tests/editor/quickfix/AbstractQuickfixTest.java) allows the definition of test cases for quickfixes. Quickfixes can be tested by using the method + +``` +public void testQuickfixesOn(CharSequence it, String issueCode, Quickfix... quickfixes) +``` + +This method takes a DSL text as first argument. The second argument is the issue code of the issue that can be fixed by quickfixes. Finally the third argument is an array of `Quickfix` testing instances, which defines a tuple of a label, the quickfix description and the expected resulting DSL text after appliance. + +``` + @Data + protected static class Quickfix { + String label + String description + String result + } +``` + +The Xtext example projects Domainmodel, Statemachine and Home Automation are extended by such tests to demonstrate its usage. For example, the Domainmodel Example's quickfix test looks like this: + +``` +class QuickfixTest extends AbstractQuickfixTest { + + @Before def void setup() { + /* + * Xbase-based languages require java project + */ + projectName.createJavaProject + } + + @Test def fix_invalid_entity_name() { + ''' + entity blog { + } + '''.testQuickfixesOn(INVALID_TYPE_NAME, new Quickfix("Capitalize name", "Capitalize name of 'blog'", ''' + entity Blog { + } + ''')) + } + + @Test def fix_invalid_property_name() { + ''' + entity Blog { + Title : String + } + '''.testQuickfixesOn(INVALID_FEATURE_NAME, new Quickfix("Uncapitalize name", "Uncapitalize name of 'Title'", ''' + entity Blog { + title : String + + } + ''')) + } + + @Test def fix_invalid_operation_name() { + ''' + entity Blog { + title : String + op SetTitle(String title) {} + } + '''.testQuickfixesOn(INVALID_FEATURE_NAME, new Quickfix("Uncapitalize name", "Uncapitalize name of 'SetTitle'", ''' + entity Blog { + title : String + op setTitle(String title) {} + + } + ''')) + } +}} +``` + + +# Language Server Support + +## Upgrade to Eclipse LSP4J 0.6.0 + +Xtext now integrates Eclipse LSP4J version 0.6.0. + +## Hierarchical Document Symbols + +Xtext now supports the _hierarchical document symbols_ as a response to the `textDocument/documentSymbol` request (introduced with [LSP 3.10.0](https://microsoft.github.io/language-server-protocol/specification#version_3_10_0). For this support a new interface [`IDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/IDocumentSymbolService.xtend) has been added to bundle `org.eclipse.xtext.ide`. By default it binds to a Noop implementation. Hierarchical symbols can be activated by binding the [`HierarchicalDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/HierarchicalDocumentSymbolService.xtend) implementation. + +## Configurable Server Exit Behavior + +The default behavior on receiving the `exit` command of Xtext language servers was to call `System.exit` and thus terminate the JVM. While this is desirable when a host process is shut down (like termination of the editing tool) it harms [scenarios](https://github.com/eclipse/xtext-core/issues/885) where the language server and client run on the same JVM. + +To support both, the `exit` command is now delegated to an instance of the introduced interface `ILanguageServerShutdownAndExitHandler`. Its default implementation `ILanguageServerShutdownAndExitHandler.DefaultImpl` still calls `System.exit()`. For embedded scenarios the interface should be bound to `ILanguageServerShutdownAndExitHandler.NullImpl` instead, which ignores the exit request and keeps the JVM alive. + +# Minimal Target Platform + +The Eclipse Platform has changed the release cadence after its Photon release (4.9) to a quartely release cycle. This increases the speed of changes to the platform that Xtext relies on and makes it hard for projects like Xtext that deeply integrate with the platform to support a wide range of relases. Therefore it was decided to cut off the supported Eclipse releases and require Eclipse 4.7.3a (Oxygen.3a, latest Oxygen release) at least. + +This has now been enforced by constraining the lower bound of all bundles of the Eclipse Platform. As a consequence, Xtext 2.16 will not be possible to install on an earlier Eclipse release. ## Deprecation of GWT We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). From 6496f9d131dc2415f183e48693501f15d7b36aa8 Mon Sep 17 00:00:00 2001 From: Christian Dietrich Date: Tue, 27 Nov 2018 11:37:24 +0100 Subject: [PATCH 06/18] removed wrong j11 claim Signed-off-by: Christian Dietrich --- xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md | 1 - 1 file changed, 1 deletion(-) diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index b20c0779f5f..baabc659d81 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -15,7 +15,6 @@ Java 11 has been released in September and [Xtext is in preparation](https://git * ASM 7: The ASM bytecode analysis and manipulation framework has been upgraded to the latest version 7.0. * Tycho 1.3: Tycho 1.3 is built against latest JDT, which is required to use Java 11. All projects and wizards have been upgraded to Tycho 1.3. * Gradle: Xtext 2.16 builds against and uses Gradle 4.10.2 now. -* xtext-maven-plugin: The plugin has been updated to support the Java 11 source level. ## Testing From 5b44e07c6217ae90eb8da229bc5d82bb14f84c34 Mon Sep 17 00:00:00 2001 From: Christian Dietrich Date: Tue, 27 Nov 2018 16:17:41 +0100 Subject: [PATCH 07/18] updated xtend documentation to the new version Signed-off-by: Christian Dietrich --- xtend-website/documentation/204_activeannotations.md | 4 ++-- xtend-website/download.md | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/xtend-website/documentation/204_activeannotations.md b/xtend-website/documentation/204_activeannotations.md index fc53391ca0f..a67cdddf5d0 100644 --- a/xtend-website/documentation/204_activeannotations.md +++ b/xtend-website/documentation/204_activeannotations.md @@ -240,13 +240,13 @@ Therefore, careful testing and debugging of the processor is essential. It is be org.eclipse.xtend org.eclipse.xtend.core - 2.15.0 + 2.16.0 test org.eclipse.xtext org.eclipse.xtext.xbase.testing - 2.15.0 + 2.16.0 test ``` diff --git a/xtend-website/download.md b/xtend-website/download.md index 94a4a3c5c7b..a8bebf42c26 100644 --- a/xtend-website/download.md +++ b/xtend-website/download.md @@ -52,7 +52,7 @@ If you already have a project, you need to add the Xtend library: org.eclipse.xtend org.eclipse.xtend.lib - 2.15.0 + 2.16.0 ``` @@ -62,7 +62,7 @@ and the Xtend compiler plugin: org.eclipse.xtend xtend-maven-plugin - 2.15.0 + 2.16.0 @@ -84,13 +84,13 @@ Here is a minimal Gradle build script using Xtend: ```groovy plugins { - id "org.xtext.xtend" version "2.0.1" + id "org.xtext.xtend" version "2.0.2" } repositories.jcenter() dependencies { - compile 'org.eclipse.xtend:org.eclipse.xtend.lib:2.15.0' + compile 'org.eclipse.xtend:org.eclipse.xtend.lib:2.16.0' } ``` From 4a6f581b421053d1e16c5c819892da2e13e3da4e Mon Sep 17 00:00:00 2001 From: Christian Dietrich Date: Sat, 1 Dec 2018 09:25:48 +0100 Subject: [PATCH 08/18] tycho 1.3 hint Signed-off-by: Christian Dietrich --- .../_posts/releasenotes/2018-12-04-version-2-16-0.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index baabc659d81..e91e1caa0b0 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -118,6 +118,16 @@ We will no longer maintain the GWT versions of Xbase and Xtend Lib. The correspo ## Outlook for 2.17 Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17 +## A word on Tycho 1.3 +Tycho 1.3 will be released a few days after the Xtext. So if you are keen on using it you can add `1.3.0-SNAPSHOT` as tycho version to your pom file and the tycho snapshot repository as well. + +``` + + tycho-snapshots + https://repo.eclipse.org/content/repositories/tycho-snapshots/ + +``` + ## Fixed Issues As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a 100 issues and almost 300 pull requests have made it into this release. For further details please refer to the following lists: From 6229057c24247eea354753b3121d7228ec1850b2 Mon Sep 17 00:00:00 2001 From: Karsten Thoms Date: Mon, 3 Dec 2018 09:13:49 +0100 Subject: [PATCH 09/18] Parallel Build support Signed-off-by: Karsten Thoms --- .../releasenotes/2018-12-04-version-2-16-0.md | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index b20c0779f5f..3e82e3d31b7 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -90,24 +90,40 @@ class QuickfixTest extends AbstractQuickfixTest { }} ``` +## New Project Wizard -# Language Server Support +The New Xtext Project wizard selects JUnit 5 as default now. -## Upgrade to Eclipse LSP4J 0.6.0 +## Parallel Project Build Support + +With Eclipse 4.8 (Photon) the Eclipse Platform is supporting parallel build of projects in the workspace. Enabling this feature requires that all configured builders of a project are defining a fine grained scheduling rule. For the XtextBuilder the scheduling rule is configurable by preference now. + +The preference is not configurable through preference pages. To enable it, set the `org.eclipse.xtext.builder/schedulingrule` preference option programmatically or by providing a preference file. The supported values are: + +* `WORKSPACE`: Workspace root scheduling. This is the default value. +* `ALL_XTEXT_PROJECTS`: Lock all projects with Xtext nature configured. Allows projects of other natures to be built in parallel. +* `PROJECT`: Locks the currently built project. +* `NULL`: No locking + +This feature is _experimental_ for now. + +## Language Server Support + +### Upgrade to Eclipse LSP4J 0.6.0 Xtext now integrates Eclipse LSP4J version 0.6.0. -## Hierarchical Document Symbols +### Hierarchical Document Symbols Xtext now supports the _hierarchical document symbols_ as a response to the `textDocument/documentSymbol` request (introduced with [LSP 3.10.0](https://microsoft.github.io/language-server-protocol/specification#version_3_10_0). For this support a new interface [`IDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/IDocumentSymbolService.xtend) has been added to bundle `org.eclipse.xtext.ide`. By default it binds to a Noop implementation. Hierarchical symbols can be activated by binding the [`HierarchicalDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/HierarchicalDocumentSymbolService.xtend) implementation. -## Configurable Server Exit Behavior +### Configurable Server Exit Behavior The default behavior on receiving the `exit` command of Xtext language servers was to call `System.exit` and thus terminate the JVM. While this is desirable when a host process is shut down (like termination of the editing tool) it harms [scenarios](https://github.com/eclipse/xtext-core/issues/885) where the language server and client run on the same JVM. To support both, the `exit` command is now delegated to an instance of the introduced interface `ILanguageServerShutdownAndExitHandler`. Its default implementation `ILanguageServerShutdownAndExitHandler.DefaultImpl` still calls `System.exit()`. For embedded scenarios the interface should be bound to `ILanguageServerShutdownAndExitHandler.NullImpl` instead, which ignores the exit request and keeps the JVM alive. -# Minimal Target Platform +## Minimal Target Platform The Eclipse Platform has changed the release cadence after its Photon release (4.9) to a quartely release cycle. This increases the speed of changes to the platform that Xtext relies on and makes it hard for projects like Xtext that deeply integrate with the platform to support a wide range of relases. Therefore it was decided to cut off the supported Eclipse releases and require Eclipse 4.7.3a (Oxygen.3a, latest Oxygen release) at least. @@ -121,7 +137,7 @@ Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17 ## Fixed Issues -As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a 100 issues and almost 300 pull requests have made it into this release. For further details please refer to the following lists: +As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. Almost 100 issues and 300 pull requests have made it into this release. For further details please refer to the following lists: - [Fixed GitHub issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) From ca9922a11d66aaeabe8090a085ed1c9c2e8903e5 Mon Sep 17 00:00:00 2001 From: Sebastian Zarnekow Date: Mon, 3 Dec 2018 09:27:32 +0100 Subject: [PATCH 10/18] Proofreading --- .../releasenotes/2018-12-04-version-2-16-0.md | 2 +- .../releasenotes/2018-12-04-version-2-16-0.md | 65 ++++++------------- 2 files changed, 20 insertions(+), 47 deletions(-) diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 3c4a8907637..d0e4c3029dc 100644 --- a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -6,7 +6,7 @@ categories: releasenotes published: false --- -This release focuses on stability, performance and the integration in Eclipse 2018-12. +This release focuses on stability, performance and the compatibility with Eclipse 2018-12. ## Triple-equals quickfix is now a multifix diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index e91e1caa0b0..915b19bbc53 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -6,11 +6,11 @@ categories: releasenotes published: false --- -This release focusses on stability, performance and the integration in Eclipse 2018-12. +This release focusses on stability, performance and the compatibility with Eclipse 2018-12. ## Java 11 Preparation -Java 11 has been released in September and [Xtext is in preparation](https://github.com/eclipse/xtext/issues/1182) for full support. There are many components Xtext relies on which need to work with Java 11, and not all could be integrated so far, or are not available themselves yet. Thus we schedule Java 11 support for release 2.17. However, some preparational work has already been included into Xtext 2.16: +Java 11 has been released in September 2018 and [Xtext is in preparation](https://github.com/eclipse/xtext/issues/1182) for full support. Xtext relies on plenty of different components each of which need to work with Java 11. So far not all of these are available themselves. Others released new versions that could not be integrated yet. Thus we had to reschedule Java 11 support for Xtext 2.17. However, some preparational work has already been included into Xtext 2.16: * ASM 7: The ASM bytecode analysis and manipulation framework has been upgraded to the latest version 7.0. * Tycho 1.3: Tycho 1.3 is built against latest JDT, which is required to use Java 11. All projects and wizards have been upgraded to Tycho 1.3. @@ -23,10 +23,10 @@ Java 11 has been released in September and [Xtext is in preparation](https://git A new base class [`AbstractQuickfixTest`](https://github.com/eclipse/xtext-eclipse/blob/master/org.eclipse.xtext.ui.tests/tests/org/eclipse/xtext/ui/tests/editor/quickfix/AbstractQuickfixTest.java) allows the definition of test cases for quickfixes. Quickfixes can be tested by using the method ``` -public void testQuickfixesOn(CharSequence it, String issueCode, Quickfix... quickfixes) +public void testQuickfixesOn(CharSequence model, String issueCode, Quickfix... quickfixes) ``` -This method takes a DSL text as first argument. The second argument is the issue code of the issue that can be fixed by quickfixes. Finally the third argument is an array of `Quickfix` testing instances, which defines a tuple of a label, the quickfix description and the expected resulting DSL text after appliance. +This method takes the original DSL text as its first argument. The second argument is the issue code of the problem that can be fixed by the quickfixes under test. Finally the third argument is an array of `Quickfix` testing instances. A testable Quickfix defines a label, a description and the expected resulting DSL text. ``` @Data @@ -37,55 +37,28 @@ This method takes a DSL text as first argument. The second argument is the issue } ``` -The Xtext example projects Domainmodel, Statemachine and Home Automation are extended by such tests to demonstrate its usage. For example, the Domainmodel Example's quickfix test looks like this: +The Xtext example projects Domainmodel, Statemachine and Home Automation do include exemplary tests to demonstrate its usage. The Domainmodel example's quickfix test looks like this: ``` class QuickfixTest extends AbstractQuickfixTest { - @Before def void setup() { - /* - * Xbase-based languages require java project - */ + @Before + def void setup() { projectName.createJavaProject } - @Test def fix_invalid_entity_name() { + @Test + def fix_invalid_entity_name() { ''' entity blog { } '''.testQuickfixesOn(INVALID_TYPE_NAME, new Quickfix("Capitalize name", "Capitalize name of 'blog'", ''' - entity Blog { - } - ''')) - } - - @Test def fix_invalid_property_name() { - ''' - entity Blog { - Title : String - } - '''.testQuickfixesOn(INVALID_FEATURE_NAME, new Quickfix("Uncapitalize name", "Uncapitalize name of 'Title'", ''' - entity Blog { - title : String - - } - ''')) - } - - @Test def fix_invalid_operation_name() { - ''' - entity Blog { - title : String - op SetTitle(String title) {} - } - '''.testQuickfixesOn(INVALID_FEATURE_NAME, new Quickfix("Uncapitalize name", "Uncapitalize name of 'SetTitle'", ''' - entity Blog { - title : String - op setTitle(String title) {} - - } - ''')) + entity Blog { + } + ''') + ) } + .. }} ``` @@ -94,23 +67,23 @@ class QuickfixTest extends AbstractQuickfixTest { ## Upgrade to Eclipse LSP4J 0.6.0 -Xtext now integrates Eclipse LSP4J version 0.6.0. +Xtext 2.16 integrates Eclipse LSP4J version 0.6.0. ## Hierarchical Document Symbols -Xtext now supports the _hierarchical document symbols_ as a response to the `textDocument/documentSymbol` request (introduced with [LSP 3.10.0](https://microsoft.github.io/language-server-protocol/specification#version_3_10_0). For this support a new interface [`IDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/IDocumentSymbolService.xtend) has been added to bundle `org.eclipse.xtext.ide`. By default it binds to a Noop implementation. Hierarchical symbols can be activated by binding the [`HierarchicalDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/HierarchicalDocumentSymbolService.xtend) implementation. +Xtext now supports the _hierarchical document symbols_ as a response to the `textDocument/documentSymbol` request (introduced with [LSP 3.10.0](https://microsoft.github.io/language-server-protocol/specification#version_3_10_0). For this support a new interface [`IDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/IDocumentSymbolService.xtend) has been added to bundle `org.eclipse.xtext.ide`. By default it binds to a no-op implementation. Hierarchical symbols can be activated by binding the [`HierarchicalDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/HierarchicalDocumentSymbolService.xtend) implementation. ## Configurable Server Exit Behavior The default behavior on receiving the `exit` command of Xtext language servers was to call `System.exit` and thus terminate the JVM. While this is desirable when a host process is shut down (like termination of the editing tool) it harms [scenarios](https://github.com/eclipse/xtext-core/issues/885) where the language server and client run on the same JVM. -To support both, the `exit` command is now delegated to an instance of the introduced interface `ILanguageServerShutdownAndExitHandler`. Its default implementation `ILanguageServerShutdownAndExitHandler.DefaultImpl` still calls `System.exit()`. For embedded scenarios the interface should be bound to `ILanguageServerShutdownAndExitHandler.NullImpl` instead, which ignores the exit request and keeps the JVM alive. +To support both use cases, the `exit` command is now delegated to the `ILanguageServerShutdownAndExitHandler`. Its default implementation `ILanguageServerShutdownAndExitHandler.DefaultImpl` preserves the existing behavior and invokes `System.exit()`. For embedded scenarios the interface can be bound to `ILanguageServerShutdownAndExitHandler.NullImpl` instead, which ignores the exit request and keeps the JVM alive. # Minimal Target Platform -The Eclipse Platform has changed the release cadence after its Photon release (4.9) to a quartely release cycle. This increases the speed of changes to the platform that Xtext relies on and makes it hard for projects like Xtext that deeply integrate with the platform to support a wide range of relases. Therefore it was decided to cut off the supported Eclipse releases and require Eclipse 4.7.3a (Oxygen.3a, latest Oxygen release) at least. +The Eclipse Platform has changed the release cadence after its Photon release (4.9) to quartely major releases. This increases the speed of changes to the platform that Xtext relies on. Since Xtext integrates deeply with the platform, its becoming harder to to support a wide range of releases. Therefore we decided to cut off the supported Eclipse releases and require at least Eclipse 4.7.3a (Oxygen.3a, latest Oxygen release). -This has now been enforced by constraining the lower bound of all bundles of the Eclipse Platform. As a consequence, Xtext 2.16 will not be possible to install on an earlier Eclipse release. +This has now been enforced by constraining the lower bound of all bundles of the Eclipse Platform. As a consequence, Xtext 2.16 can no longer be installed on an older Eclipse release. ## Deprecation of GWT We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). From fdc4bb84d2db5ebd7173171cf1d5ee33c0dc5d22 Mon Sep 17 00:00:00 2001 From: Arne Deutsch Date: Mon, 3 Dec 2018 10:46:56 +0100 Subject: [PATCH 11/18] eclipse/xtext-xtend#372: Add releasenotes. Signed-off-by: Arne Deutsch --- .../releasenotes/2018-12-04-version-2-16-0.md | 6 ++++++ .../releasenotes/2_16_hover_javadoc_link.png | Bin 0 -> 68129 bytes 2 files changed, 6 insertions(+) create mode 100644 xtend-website/images/releasenotes/2_16_hover_javadoc_link.png diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 3c4a8907637..686ee13dcac 100644 --- a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -8,6 +8,12 @@ published: false This release focuses on stability, performance and the integration in Eclipse 2018-12. +## Hover and Hyperlink on links in javadoc comments + +Inside Xtend source files hover over a link inside a javadoc will now display the javadoc comments in a hover pop-up. Also F3 is supported for these links. + +![]({{site.baseurl}}/images/releasenotes/2_16_hover_javadoc_link.png) + ## Triple-equals quickfix is now a multifix Warnings of type `The operator '!=' should be replaced by '!==' when null is one of the arguments.` were only possible to be fixed one by one. The quickfix has been extended to allow the fix of multiple issues at once. diff --git a/xtend-website/images/releasenotes/2_16_hover_javadoc_link.png b/xtend-website/images/releasenotes/2_16_hover_javadoc_link.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf9f0a50ba32b9177c54113aaa48818291aecef GIT binary patch literal 68129 zcmcG01yodR+wRcaN)L!20)imT(1LV}0wOKlNDmDX(t>mfNOw0#3QBiMC^2+5XAkK6 zzhC_4|IRw+ESIpD*)y}}nP=bEeZ@UNN(z!VnBR zz)fINRdstYYfDQ*D|_Hi5J=3;-ad~QyYz* zAr!{0E2k{sP7cyXWx=7N*@GM6DHyrn>Y6a5&Bu$M6m9sC3cq&F9#FHRpbL=(KgmOE z!#Br14y73Pg4%{|QViJSktawbln`+0qthxNEzp?`5l~i25V*8-m#>g!9m%N~E_RB8 zaWw0@e_2r;w;w@0RU?_pG&=MnH+0TCynJTeG`7zL`p;jkxt|DZpUVh0p5r0<;Xg&E z0e*DTtcVU=KKT8ooiK09fhPw14&dGyYTS|?C-3WX;VVSYPB2Si%>6&dm4J1deRQrb zSQi3>Un7B%gxnKi?k{^izuKop1YNxlkTAG;hKO@QQ-gil!O7E08nDh&++13@hjBOe z3?TSN9bEv=*~dy_?{oW#e5wKiSFO#bhn@=gzfTXH&we8iWNlgWzkj?U z@MJmlbz>lKEOD~#Q(SBx`g^y}ha;FR;>kqkc1EUabt!nYwUWAc4ij!W9{2QD6h^vQ zE50E2Sb7xh6iT>sMn@-YR;yxdwUIDHVg31D)?9n1w#MZdUFKJqmZ3%I*Um&K9FW?*;uqM6>YulH+1w zJ$#3U`jXOfPltO4=Q7-O_=@c2<*&X1=g@TVab99U_6_r?`Buv}E2r?i+}@7|#> zGc#B4*0DD1JY9NwyCtL^!Ixn#*ROqr`b#tE`GbqDYkL&Wopl#b3(tXY=eBA8k8cLo zM06m})2k)Hkuy3w{ksuO?|5|F2z9cJ>-ZZk*tI<@QO4gYE`I%d9(;G7vhTrMXZTTK zgQ6#jj()L&y&p`04cHGiJMdzS5Ah=W>6hk{kNq^Z2Wq=$#VK8$7m8{-&7tlnipi() zZerI4GwRo5LYH?=y81Jz%smK~SerwsFDqgG@~$eGf|1-0-H#x1axO!9f{ddqqRTO= zFr&I+9+c|Frfy4=ZfpxqSgeZke(}XNEMX4nURJmTi;JeW74&In;nj9)Yk$A8AIj5= zvOi-D`n3i7HBCZcegAN0-}!uVWw#`ontyb2WS5@)0mjhsA=opZ5s&4_63nl{^fNNs zRPEZ8KfKtg3JZ2Hc6|hCK9sWI@%zycOv0+&;Jmxo0lTVo)j_&2-FIEqxe9k)|7N{q z<70g_+Q0KPTjfph#aX7`6VB(E!UEMH0fGu&r~5szPTUpO4|;0$XGddqr>X^TJELli z5)REi8Pr*uyHhXX2;gmxf2q1lw}1FGVAt)F_R)FEo;gchQONl7R^j&ApYzYsQcsqH zosoK-vj=xDwV^Hz1g$uh6tP4)f@tNtr>Jup3O^Ecu2ojANOP<_+-(A=_;J^ful2!2=*{OG4@dH59A%H;f_PKzXw;2$^_A5S^woJ-gIl1|Qel2x^ix3lL@ z+6U&dd+JkCN%H0@2UW~beEE+Wd_Kas*?U7Fc;dc{9iIHv$XnGCzFIc18Jx)`Y* zOgn4Yh%nFN>&2PT2pM}4uPoxYL=3^M;-Z5I& zyI4)MQr&9fIWp17Zte`9!?i!%=?wT%P7_C@jBW1?#v`SmuwK;s#phPp&o!(V#!t}a zXza>rkEJ+Lmoa;sRV*O*!?k|0h~FbpySba~ud=WlrAT+NNaUS*ad|yHf!qtbxcWsB zwiwlq?6E6t-DkbNuo9{MeL*^@#hUJw)5AIEeN7hAriJA4?A^OOiB3z&h7E$89H?J6 z3M{p)mYJ=8e7A1=1x+mun$tk-a~};7s#Bhpjg5&s`2}(;_pqa6ZRYkb4eLADaiH*P zM01}%l`=ydRuA{}D=%Y|X>IpepO;GhDd1#YNEcYUpl{8M04iJ# z;;tOeyIs)$MK_B4Qo0&_$K2q%{6{M7&RV=gg7SxNfvsGwakaC@=Qi-pTnT8dXL0;Lk}&D)by=U;b`wV^Ce(gIJT zoOeUBcgw;#1UY9>O}0xMj@{;g>Kj@cxl5$e#Y5E34@*^aySp+lgZ${dfM^vAWqVMv zk-yRB&m|g6QhfgF12?xY;oREJ*e`O0RH03Nt*d_4>wf1WPfxT&>TAmD^;l1oU-NTF zpb#o(&XeRAGLkOB7H2dvDMyB%y6FE{xZwc)O?bC+wlpH??hx!c`dUgyRPX zjm<_k>k_pvN)!8@If%~fNMkts3cJNPb*RP*c#q#z+tDy6}_=ug(8BZ@d zu9f}|E6s-(hbweJV}GHv4fsd=e7$Hs!EFUa=d%$IA^L-u=}2-nuMPYdK)3};0NrqL z@rIE7W|}WH6+NEP-X05S@r!7aUw2X%M!&(oO&{d{Oa z+l8;Q2vFBRM898{#@_2svw#n2LBp>PL}BzrF^H;K^)6!){g5Qf;#8LJovA~{H{m{g z%wc?wF_-jgU?Ts?gs+GDv}?1VaeXfTO&fCM;8k5>CZ}g+hN)&Xd=lV2^2rOI*#7jM zxn7$TuIrv)2xPL_EiC8uXarj?>!qF%!yjK{d7&Zx&DMd2$^?kPj0rwA*ea6nlZ!a- zL=bwn|5hUe3>JA|Rkv3L2`6J*dcDq4Z9~NKA^z72|4_no??c{VY0RX_U^Wp36R=2$gWMf%Zoq`&ZXtJAh745h!Ef@SwHT;dPR^<9~I^mBiZB1ct~ z_KD`y&6(SKd^ynNjNzd3T8v9PxfOB(qjJD@G-p*hMn5~;z3&%!utj(jhKhG~9KUMW@*c-0n>|Z>Vwb&}^n1i#B$HO>3;+wL8t8Cm0@{Y4-Xo zTYP**!u}>*Gx_>4BYuQ~GAr;)2H2i5Pj~0kR9-c$C`vOZiRb>@t~!dom(G&j>p=D; z`lBDBVlwyu_FAnZsg;QdajWqG%2TV_uZmZXH=pHkxC$dzj|+JuZEMtR%q>m49%Ip4 zD}!3w2qPcsM0?mwnUDO8J?e&04 zV-l6%5_=+3>8IomRLMI-&0+%`aPtMNmzxF8KFhU~R)l3B_OZv~M_tN@5Sw6D>H}S#k=I8`={?Q;RH71Y)_;F~AU9YLuVL%v(!8P!(@NXq z&*7qP+po#A)D<6pLW}9FEIgR;+#LY}^vilX62m*Nbeh zLA#rZdOcGuxSr^H1%`X>8pFAMVLB76#Lvs*_1yzl|FZ`%g}m%?cff+{VLPDZ=$}-M zQy7!liVnD0jqD>87_)ZUrS{kk!s+f@+Kw8>NN>tVGI8&`)NSjOK@dA3fZYotfnRz9 z2tvp+nz?EIL{cF<;NHlnE(8nx!XH6nomYZ{>`KEiyWZB8*HkM7SfshyomriAi(Zh; z`!Dw&?nIB;+fYOqW6W=bP&c}G&CxTx4c8*V?7zHqxFjT)AX&j;?1l>|Ep z>V2dkcl>@MFOPH!fAl4Yy80WX78w^5ls9Zt{AqPJwUAN{?S#8XPF~M!-Qjg3R>Sej z>n@r~39YxhL`V^kfb2Ida>i`5ra6X>bu(?dY?E^3?t3TJ5LRHkv_K@gM2_g^OVmIa zB};6HEAuwD-KJOH5Ay{lwqT8+ge9uNkeMvfAXJTjmyNL}FF?qCCUk^#bcJ!*vT$9MX79NI&F*1Ri6Vn-cc^Hlo;e^xFXCl37=+Kjwhon|osox#YUWU*fi77#?n9ST8zJ;wTJr#a7 zdzSwE`q@T+I&s*9LZkU`*5{7MiEeZ}F2?D)k14<1G5L*&wf%aS_SO8b93MJst33UK6wO zB~>r=8a(bgA%MDUjOxa54j%jAU-5igc|vPgqH9t1@R-K%g%2HH>?c`&&Z4T*BW{T?{l8c^+iyvu2QH9xHdR)VWJ*-rbJ=rTMEdHJioY)Go#C zE1sE}L(vkV2G)u8&^M?Y>nvdmc)8CIXqZ>`^hO8#BR56~Sj0Xi2xIfczTfj6^1gXb z5x!r2>nA62_ut0xZ(m%G<#~^@7T=Eqw>37;wI3NHhKG8Pfp*Bet`}lGF~ToktP72m zsXrt=8-rLq7t(R5#-4o(4BqHC4^=0=8##LkMcXe25x;A>-=maupT7OR3Yr4i?Pq~Y z4^2dLw?LLexNu%FKDj6j*x7xUx>Y0Oxj_TJ#geCvK#j4S7Uc|y%NNCg3QGl*^Cu2zK?CD-_37;+DNB{hI3zQ<`ktw*7JTy(_!k({mx23$N~q2(84(FZzS~ zkmooTVx-a%e@&%4wV;ru!)Xh;Pme=thR4`xSjn=-Kw~=Lz3IS$mB$g71`(UeKTKg) zm42s3$KSmm&X>h-c6tzLNk=1XYx3e=YEkS1y@^W!`~cD4?_(8IKht@a2j%SWn7TuD zMG*mX1)IO5Oy##jE^gTK+^i9DT1JQ8)KHkR#QU64x3kVG61Q+)j?vX2s4GP&9>MY+eeIqd%I$TyyQKeo7?FjrQ7*-(M3bXrG7?h5cb zQ8l0SdtgvsUl?4Zme0@Fc6nZ(r!J{oPqH44h3xTCwSo&4kqMW&yer2R|7v!A(3`;$ zYpS(HaTI^J9o4{0xq8?6@+t+`=);iWTCns#DQZS5f9oA6OvWfVl0kT3NdB>omatd< z)u2*^mn}$%J_1q64`@iR)z=h1q#bQIT(gTiL~l66buP|iJDB^(84^(MW$-g8maOcWc8%-gjV}|?(vy+9acM;lV0wv1kn1r zqgAGWVZJh$L^5|@&B!~*Cl17x1#Uh|9wW~y!_6m%oN4P`^7!!6W9;`OCAJBg=iZ$w zm5k)Y4DmSS4RhN{?R3Tg)b>|43cPeb7QyI6mQwYUfcEPiR3A_q~@iG@xKgD|Wg` z!hY-kA}x=`m~->-Vjm?wOjG4r?h#yPi=IdEd9%AsJ8s7t@8x-RsyA?ZjsVk%6qxHg zo6pTM%tw&u@CPE!WwRXAL>2tFOmCF7a|)A}ck9$fonOzNgVFO-o!$ zPSouv%ZVoZ-fh<46>?YTlW}n(IH6Y`l1?+Xc9NWSR2O|ZHaSs|>k##zi%d>$a7gd7 z;PC^TiCKH}0*<0BitSvnz?nj@(LE|@}sJ*?8y zy9247`G{>*={e(VJ+pXL!=M={SsOn5HurZN>qDtMhSJFoNMDv;Ac)P=v{w#2W z;1AJ+A3`)-7+PVpo0E*{0PL!q7xd}rQb=`jsm=<2{LtdP561Jwy(Oy~Pma|vIe%jg zC1D)mEWe!hU(EOK0MkIt&~G5oquVN2AB+9vOLjPxPD%G0D@4b> z@QFE>L=EeWd~Fge7#KTmOVRGqSYM;u%IQCE^;Co}bwJSUJj&V8-G-~HCjyQeTOcD5 zk|(r}%SetB;6RWCM(?_}>2gm=MvPZ1(I5hN2p|529Wu~gHaL(NvkJV6Y+ARaEmAR( z#5_PVL&aJbAkM@#`mnF=*j)V@RhOjno?%HrAJ3L$&{T|IYV`=LqFUEtG3CixO#c#6 zbt9Q{TP2g1TOUheI}X1exmC~WY|f_NM3>>2hGnp>loYw6&gSU!1{c#}s=vBFQ!ZP` z8)LHRHyBLM+c1WXX4zG%wWpFP!|LIMj+HS~+Rj!!U9J{Tgn~sNso92^t zr$c`5ltYis3lDs48rlDt`Km;;JdK61`!PPkKuLk{ua4Ii>GJu$P(_}B%3}J>*hQsY zXiWvH8XtI|TNS%s@XnXpPd0Xy))r`f88SSc`{9AU)y#1DqhdU#m)3Y74sWbg=QyP^ zt*gp=6GbQy;p|J^6 ziqUWn)0qY;;HqSt<(0=CYVqyzUQ9=YN=L#^WdlgCtF2jSf3zSJOur|^^NG=PSuiqO zU)x`ZZ#78-C97_r)b`EtXOCUw$)LcB0DHur8&Ay$Vyy17NK0k-$+XodZxWXF=~b?T zUQ|o=L}T#A#6*&XzuOAvwmU-|eBa#*f#75n83;)Q+?#C+Ydv9D#^=V0<`8La>U_Le z%YRf5{E86pIGDa4Tcmj)J$#3e_5REI*%G1y=}dTWiO?&P#oZx(Iq!n!yv-sf|6der z?9S(q(Z=DqCf`?dU9POQ^zyG}lJ9($UzMH1NW!}TAX#U6k54`xm$f#6!%L1~U}2NRaWd zc(1i(Qo#E&UOcOloOyXn==cd&HK3rhEgpc=~X?(MK2<V6{u_b)L~%=C5xSfwU`7waQG;V}IW}vH zOA%zTC*PyY$~ol>PsU}r(~=mgkg1}!BsRryr)vgpAs2h-aG-D~=f$FYB}>!MI23O) z=zhHBMQm-W{yeJBxR7E3xq_s&FYpq7Bqfpi6*X&l1|)i*U$)v~b;Oh4oF?WSZPoMb zDf?VTV_}0iwPPy-w)d$-_lzSvyt!eIA8yuS9Tf-@tTA-mI~ClXHN3z1PJ)aW$exwZ0)5+<6MGB_?+x>^5ZYU1{Y@n7{u zGxhP^hI7lGD+hWEEhO zZKuzD6A-l8Lu$IUXUz3ARK;T)?@{_ztO#Xea~07j6ZZA>0yIwmqb=_qg@G`9)sB(S zI8mlTYh>cVj04m;WXw7H0O5&~?lYLYoU!vUQz;&v^C=C2 zc4le{h2zZ}8PVa4=YjV4sx1h4Ht@}m#qamzA&>6FK!*@}&6ZNmK5}j}P32cJI+(GV zK-LofPv9^DTOQ$07T|w?M%JQq@=txb;0uRv2r3{<S zlV0XA6if&;UzELH&9HSLN*nC#Rp)ZVFFcf?ba=x zbOTk}sW)Zp)!jXlhM(mpIU(x_qdzs)9?PyAS2h>cH;TEPr^A}TSMK8QGN6|T<= z)Nj5O*EMFF!^20UJxsd)39kNfC{X-6td<4d(672Rw%W+RP62E$_T*>ZI2g6$4)utB zgDNTjszl%6pc+qZFPWxF0^tq|nHgafV&Yd0KN^roOPWpAmF0mGLLknPL%JdR@9ep+`?d=>aOHjzR3v3>Yfm zZu~ByOr*S|i;ax?wt2t0D1ZwxAZOWl%{vH;-x9u&*^ z8#q4^=x>iT@(to4JW;kk$l?Ej6!AO;8n^e(qBt88Fr=-y-26a=8~JF|dD3te@7;Hk zeuWANDD3-22qvCF43fS%{3UUBc52->nYO5)cY-pY*$qU84xifbk}vN6_{@dWBA5Xh ze(19i?1Fau1>&_t)_pn|LIWhO|4NGXrp4*YiEH%7`u zKUzt9aaXQF(p4q6FOyBje&_)4C-y-9rGR#~Zf+U!tXy@Wd+@>=#FUC3Y>q+d#>+tK z+OHijsoxhEN!RQ#vCA*p?hzRNw1~JwAIS@6srGZyVAqA0J#~9Iu#60e-bXXC(6g^) z9Oj=kHG-IA)ij-40P7CcBP*mX+r_C);nTbE5E77N`R8`5s_ZXgKki_Rp3YmwdlS`MA|Dwq1qm8i2e? zQaKNo0}(-RE=kB@wSMEK;(#UqY|JgAl?=m{9{?cp3RWGg9;kzA-&lND50%k)7mX^D zBA?fj=QpXGe|?zid-qPBYP)#%_X_lLZ+xLgK!KC8{yRLH`1lH&KKkX|E`4?J$DR}w zkRqaFQ;8b*$vdR-7EeW^T1l_l2aXZI!x3wnRnmSdmCF$=cUI^0{-TTkp@&yc_+jYa zAD1F7R2(X(SX+~gZ={S~CQ5qR3*dHeM{FGD+$j@2zk$OlgF62&+M%sf2NZ#Yz&cRW z!ylWDB!F+FW155_U|66JQ;M?%j7G9=In}s7?@6;@qU(vq;*}Bi)h75RGvH+?9Bt~o ztD3_*VivRH6LS|9ZbrMlyxBaGjt(TNg)fkbo39zP6B647y}x-q)|YtwhINapl$q(i zEI)pj=+r(ajk9058i#I4n)D@#MhcxI@CIf`HuT{{Q46I{o0P(9A13iS>s#2JRlE^w z;t>~SDY9>LE2SGA*0tCzkM%`+bTyK#XQl}&S)fAJx#OnRtrP8n216{VU1(NNjt~Ck zFF>bBn%qGYj_6!7oNWq`fxl^DMN8QfVQT~(hIHFjexqxmO7;=rj-nW|*hf`TiL&w# z%QEDTxeLgq=S4(o(&XG0v>4Lw#qtqP?HlLl$mP!}#}$*6&uG#blP`xaQY`5rIk6v> zef%FCQIt)-1`|sQO0wGbT#wqJ<7zQ;a}IiQ`=Z+<02!4bH>vs|{$5OY{Ptti($Dv= z@1p7mH04xD3mwhD80fP7tkMz!2#H`Ba~IujfV8+SKf(^_d*r2I0jV>h;$_8*V-!SK zek;Gi>rO;l7e-cH@Yz&BBe~M>br;W!qqY9%L_2LT$~Sbd;#W|#^on+5TfEgE^0WxM zwn!%-{!rp1*)NQ&j4pRzxblF4*j#+0AQmkIvyYsRf1W+_V?anb0`@wm zj8(i>j-*r_ev*G2Tt^(hn|k~G$c~)w!JtX;P=v60A4v3`4CbDxF`~xHVKxV>j~3Xa z7FjeILnh@^yBH>{cF90bo7VWbuyHAikFVIwJP!W>z!u&qW5qmfdtF_BBsQ{3=$4vo z%>uUTzJ-JIE?sHS7rhSE8fi%gXV0q0Hfy0r7ChFtuU>STH1tBNVdqoZWUwN!>?5B! z*3u2mXfuRIq0~Eo)4~*Igq{fO^GRb|HqcDtdnX%&w{PFZB|?e2inKe|*@zJyg)b3+ zS}^E3!?ziz2K)Jb=5|Gblr-nt8$V*2IU^cq9G|DK7aO=UK`8^}f1oJ0U`;MXKC8I# zUgZNA0nRxTA`bdje7ukI&-hr!GDJxIF}Yg;D)msQZ%d&hD^W@|j6(;5gJxq)I~o!& zn!>X;PsRA0eukR)&6`ex^mCfBq$b>F1TGqq+36z=-_X|ZGocetNU7gZelddEgyZ8A zS%OYoDMjT|IUJTxtz|v84(2wmnvPsLpRNv^Lxtef(+7qy{Rl-QwLNWq?slVz+H5dC z4jCm%Q>59Q&>As=<}|va33AQb6dV&8?`3od64hk=Lhd0k$9bU<@IWAvy3`3amxLbR z6~_Q^9RV*ObTjq}ZoDTdYfM?El!01CUdKpH;!pe+(?m)>nO#q%S&K**@&1Bo5gj>9 zcXJCz#9Es1iFmG)DJUENu0VxD%mOx=daGkV`;oNl zE>>OqmQr?ktIWASb6+NV4)#R6nYxbJ>*nHkpLm8*ARB=_P+Z{pY2nG6SbLG+YTkle z>6P*^oP5No;Md0O9_VKM^0fuwv6ISRnbnmnO=0`>W`K_Nej%97b+W7*i7rolvYijD zenQ%@jUK@v)hv?e5F2$gg961B3urMeIDdQRgkQDg`~g>_*XN(r+WZ^P=2`$7t3RR??%9lW)?R zxH~itZ&X9#7<`{lqqsfD0p{!iu=4@)BosVcBor>$e^)H^s< z+k0u&xOebfS8vwYowNNrs68kEOV|zcEwHT%;BPUE#JtU!?)&5j&J+o7;OWxkL&JeE z)7?xx%Y#=CM>;$uT zndL%%B2>Z!?>4$UjQds6s$b5xLc`tf8c1f$Z2mt3Y{dJ9fHi97+$%`H%`>#z_-Y73 zTcKuMZXnJIx*i$1b?uOzE4D@dMryF^KOuF3Hzf7wEO%IEK%~CnNVME?TI#+jsX{x@ zcq(c3(jJSAlrHnP8%4%C$bC-e8>&!wrq^NBJw(oEb+wrd9eH9>59vx)n0iu#G@R$# znO4nQls;u=fI1wHX!lc>54tuz&@c7}&H3B26>dPhWO}(MJZOO1yjpg|34F6i3pPO5 zYwE?1jpy0-=R7HmnNYr|lMFC=z5ahlY+HU4+o%{uX0TD+sCN&E*8?8Q^2}vr=K6m? zahlYBhvFtd>!(CX2?>8gafN854Jlci7!DEqzz;rdQ}F_^qnvWHPajZ-F>9K3=WtFH zNPfL38ax7yjBuXX={H}R?Ig#U?EOz>q(gnRhlwfcy82$%t9-MYOOc z2ZP2~ULsYNt@wk-@6@eLfOHfO58^tDKA-dYAm874uFdY#s`2N^gMuw%fffO)i%q1m z2opLD5;)te+G?H4zm5Z#u~jB|_1eJtv!^^* z3dZ3<1-5e#+G}yJ}4$!X$S+!5pWnWoghSgGPV3CD;c-I|spk_=k>&ms4 zsqd|paBJy3u2R4npp;0;kg$*?~XS1dzX8* zAGA>?6%82QJ+qFEl$?fN=YA3HExw$s2(*7NUHJynHNJXK$mTvnFO}lI3AaVKw_Scj zl)oj&Gy%w;MUHWw{~^dt`|b5mXoI~B4s$-CYMbU((EFN5#_hXIGC+W@@w;{g+f{C;LS7D#%;}w= zmsN@a_tDYbI|6Q-tC;Y?cgRdQe-~K_Y?(d^UdWVt!pQX*h6XAnv&M!_y zm(Jmi?^AST_V#>d3AgHz^vBlmHMC8v!n93=q>J@u$+(-4pT$hV=*1CPSY%}bg?*l} zchI}*a!7z*S#&^HI^B8u5hKg|em315hEF4VPMS~|Mk(F@DBPTv)XF{0=aFEC*OAiX zS~Wgs(KckL#v@6hQSF!28+v{A5k(lU@0ena znL6FKsZqxq{Q*Cw2wh8U=6W9HVba{}TPWBcsur7k7T`R7IsrLpq$pGXF5NeAcdifm zP5h`PJJ135GnBF6o$(VMo&e)r;?E&3EO0Uy{{rv6gH?jdq~|HFlo+7OL;0I%?nAbh zirGieqq#r5pHD7{SRk?<#JgG+-%)z;c~HHK7zhdF>VMw@<{T_DkFto*{%qn4{S2=^c28mb{er4?1;Z?h%`ET9TF&%a z)oG=TwPFx`v>C^{vAAd2@g|=Oxvz92j2gac3mJO%i`51;6l5&zP`>xz4w)1nd}v_B z^JZ!&jWz_vrWicGzcsx*n4)Q3xc*+~y$`BfW{Ki?`uDM2Ax%K$@jEv;)8=3TWr`O3L1cho)NKmsJgohm1pwP)h9@ z>N7pzuVwvnsqkit4;>IwempiijM#pO<7A6XOZ#^n+$&MtVf=FLZxnuG=B)q{pYU`U zt^+r#0q2~hot5s`fkHb(?u%mq2TDYOm&#}ajF&q6H-#U4#fMgyS0SEASxcNO?GCub z@o;zjAKc={5Wp?om|4w++X@@93e<^{FgDHiQ)4=~Z7Hot6B-nn+M)<#A;)Xz$U=C) zdgGvt`0pl39<=lA)t&z>tOM&e6se6Agc|SIk&MT;EYMmi53s!0?|$ag2?9mZh5YJ%Diw z@vm7KWGTHH`ZWmu+(+%UI0y`1J5jSX_19ZBqX|}fY)+zYY-w!=oIQ~;U8Zo{bVADA zGVt&mflmQNG>ZI(gr9mQBdUiflT&Gr@~+Cu2j9Y8oo`@&V^_@$45A9-q&dHPo5w0L z2MQb@-6{T)impJ`AwW)XgwK9L^DF8XFdG6K)s3(OJfGszs(8@wI$j#;@Td=(^$C`mwL5kl2 zTz|a(wqEfp5ZcY02nJI}f`DTPkmQ1aHIox?7_=Q9s&Fw@oZ%K=xx0_4fIIkDsz%0PY&9mFe+Hh;~r7N(N|)d*G++Qj3nt z*zpwo)s>joVETg(@Ck{1MtEz}UBur~Nxmf%(~^5OpH1kzv31Ty>(XM?{-S3?%KJ*> zyRK+*7vNUQ*-`aw9mn*7Htqw-u9(r&&PEpH>9Upm7}w+@;t=^64*J>of@d0# z<%lI$p0%#Wn^nT`6QL_r`|6l($0t36Ba(s>-?T;3rz+yF`7>pkV}sc^mI7(~cd?b! zO)qJ__8VOp&UR`T^C8U>MPB2;GxOa5OH%}LI3)EWI&p{i0F5ovz*b7)UP*kSI5?LBU9k~6u++i9v>MgLEVEYA4L zlp1DUBQB9kCdHs1=iZLOh~a9KZ=dZ8r93P!g`|YlItd`@2TDPC9|4knUsjaRx}3gP zmO3yJCzI^{b4fmt+#}I{@&AVilKPG^NINg6LT(lsm9;T!I=C&l*$-h zv-s}e+C;GwXg6Udx#!i=JLB1WYEp`f3p2UTOG~jwp}2$ zxNR4#EdEWq5cia%E9dpQ7z%w4EqJ@2`)QV1iUmTn<2ESWiv2I`!j$x**+{!7c(Uy1 zL3a3ec(Ux7kU29N@XY`S8wG{T#c5vHo#*z*z^4J^`TUU#+MN3`prn^X4e)gf(}&&vF<(axkxLpM>KYS zqe8tFBO{_0^y|~=hG+OPU$?oPw|qf&7B2I$dJ$J`nzOJbp{WJIMo}>XKNTFRJaH9g zMGYUMSGaABTCcdvFcu^UoqdcR$y)g+p1IDrbN_u`^<3^HtFB*FJaC`Xuwjls)L%aT_LIAG94u|AJ zobvV#lQ-&O-=x==Z558p%p!feW{_s0*q z_QBY5hc6yv?z;uRkA8Dp^UsdHi`VZj@&K-pe@K1f{X^wMI)Ia#nOqm9#a^`M7C(U66<-4uAi1^SPan$Snj zW4*Ch7dA?94U2U;N{v_804i4-OVx2+tkb&LWb_&ch-0E1%gwg|o$mV|WThMPZNGT= z)uhS%FdkXCKVVQ&vV+alm)9qI(?z|qo zzY=pQw6!Q07b&32v&dxVm?`3!W>k{aX8=S3==s78kDv7Fp@ zk!@6fVs+AQkwsaZ3JBRuCq{C<&IjgiX3C^z(1|8&pJVVp)BByBqt7wqdPT>W_E$Cl zYCq(Hqqv;^tdm>Ar)R{*r^0Xob`bBDk8BdK;pu?E<$`Hut)x{G z4r|pRGFGatHv>oF*po7sDPvcmhS}+=Sn8#T2KjIkph{zOjEzPH$WdWt5HoA}*IJ>) zq6py`=GcaN#NhHR*HCd@u2R)0KvCYAl`CAYVhhkdH2(YWN!w3o0bo%HDm!Ke$RaediKcc#?vpIylEu%(V{x9 zd%HubCwsG*cU%}q0B_5lGDU3ATB0LDReLk`mU~9?xvPOO?U% zCrKBmcRxn#Qz^aOr`1*E)J#0M;y@#C_a+eFpR@@C0vM)jHYaWGD6EU

SL9UQJQC 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%0D!ZuXEnqReCPNe)_13Zl$ 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 bf80Dza7+0Z`uu=_0{*1L`=OQ? literal 0 HcmV?d00001 From db3e8bcf76eb358ae0eeb5cc4240802cfc1a80ef Mon Sep 17 00:00:00 2001 From: Titouan Vervack Date: Mon, 3 Dec 2018 11:49:27 +0100 Subject: [PATCH 12/18] Proofreading the releasenotes Signed-off-by: Titouan Vervack --- .../_posts/releasenotes/2018-12-04-version-2-16-0.md | 8 ++++---- .../_posts/releasenotes/2018-12-04-version-2-16-0.md | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 8bb6cbe3b03..b260e5344ed 100644 --- a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -8,21 +8,21 @@ published: false This release focuses on stability, performance and the compatibility with Eclipse 2018-12. -## Hover and Hyperlink on links in javadoc comments +## Hover and Hyperlink on links in Javadoc comments -Inside Xtend source files hover over a link inside a javadoc will now display the javadoc comments in a hover pop-up. Also F3 is supported for these links. +Inside Xtend source files, hovering over a link inside a Javadoc will now display the Javadoc comments in a hover pop-up. F3 is also supported on these links. ![]({{site.baseurl}}/images/releasenotes/2_16_hover_javadoc_link.png) ## Triple-equals quickfix is now a multifix -Warnings of type `The operator '!=' should be replaced by '!==' when null is one of the arguments.` were only possible to be fixed one by one. The quickfix has been extended to allow the fix of multiple issues at once. +Warnings of the type `The operator '!=' should be replaced by '!==' when null is one of the arguments.` could only be fixed one by one. The quickfix has been extended to allow fixing multiple issues at once. ## Deprecation of GWT We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). ## Outlook for 2.17 -Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17 +Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17. ## Fixed Issues diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 915b19bbc53..8c1e06f88b1 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -6,11 +6,11 @@ categories: releasenotes published: false --- -This release focusses on stability, performance and the compatibility with Eclipse 2018-12. +This release focuses on stability, performance and the compatibility with Eclipse 2018-12. -## Java 11 Preparation +## Java 11 preparation -Java 11 has been released in September 2018 and [Xtext is in preparation](https://github.com/eclipse/xtext/issues/1182) for full support. Xtext relies on plenty of different components each of which need to work with Java 11. So far not all of these are available themselves. Others released new versions that could not be integrated yet. Thus we had to reschedule Java 11 support for Xtext 2.17. However, some preparational work has already been included into Xtext 2.16: +Java 11 has been released in September 2018 and [Xtext is in preparation](https://github.com/eclipse/xtext/issues/1182) for full support. Xtext relies on plenty of different components, each of which need to work with Java 11. So far, not all of these are available themselves. Other parties have released new versions that could not be integrated yet. As a result we had to reschedule Java 11 support for Xtext 2.17. However, some preparational work has already been included into Xtext 2.16: * ASM 7: The ASM bytecode analysis and manipulation framework has been upgraded to the latest version 7.0. * Tycho 1.3: Tycho 1.3 is built against latest JDT, which is required to use Java 11. All projects and wizards have been upgraded to Tycho 1.3. @@ -71,13 +71,13 @@ Xtext 2.16 integrates Eclipse LSP4J version 0.6.0. ## Hierarchical Document Symbols -Xtext now supports the _hierarchical document symbols_ as a response to the `textDocument/documentSymbol` request (introduced with [LSP 3.10.0](https://microsoft.github.io/language-server-protocol/specification#version_3_10_0). For this support a new interface [`IDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/IDocumentSymbolService.xtend) has been added to bundle `org.eclipse.xtext.ide`. By default it binds to a no-op implementation. Hierarchical symbols can be activated by binding the [`HierarchicalDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/HierarchicalDocumentSymbolService.xtend) implementation. +Xtext now supports the _hierarchical document symbols_ as a response to the `textDocument/documentSymbol` request (introduced in [LSP 3.10.0](https://microsoft.github.io/language-server-protocol/specification#version_3_10_0)). For this support a new interface [`IDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/IDocumentSymbolService.xtend) has been added to the bundle `org.eclipse.xtext.ide`. By default it binds to a no-op implementation. Hierarchical symbols can be activated by binding the interface to the [`HierarchicalDocumentSymbolService`](https://github.com/eclipse/xtext-core/blob/9e46f302bb7bfd68b61f1a05f1c9bb5d830b7fa1/org.eclipse.xtext.ide/src/org/eclipse/xtext/ide/server/symbol/HierarchicalDocumentSymbolService.xtend) implementation. ## Configurable Server Exit Behavior -The default behavior on receiving the `exit` command of Xtext language servers was to call `System.exit` and thus terminate the JVM. While this is desirable when a host process is shut down (like termination of the editing tool) it harms [scenarios](https://github.com/eclipse/xtext-core/issues/885) where the language server and client run on the same JVM. +The default behavior on receiving the `exit` command of Xtext language servers was to call `System.exit` and thus terminate the JVM. While this is desirable when a host process is shut down (like termination of the editing tool), it harms [scenarios](https://github.com/eclipse/xtext-core/issues/885) where the language server and client run on the same JVM. -To support both use cases, the `exit` command is now delegated to the `ILanguageServerShutdownAndExitHandler`. Its default implementation `ILanguageServerShutdownAndExitHandler.DefaultImpl` preserves the existing behavior and invokes `System.exit()`. For embedded scenarios the interface can be bound to `ILanguageServerShutdownAndExitHandler.NullImpl` instead, which ignores the exit request and keeps the JVM alive. +To support both use cases, the `exit` command is now delegated to the `ILanguageServerShutdownAndExitHandler`. Its default implementation `ILanguageServerShutdownAndExitHandler.DefaultImpl` preserves the existing behavior and invokes `System.exit()`. For embedded scenarios, the interface can be bound to `ILanguageServerShutdownAndExitHandler.NullImpl` instead, which ignores the exit request and keeps the JVM alive. # Minimal Target Platform From 1dcdf80f18a5ffe15fb788180c607f764e1bc267 Mon Sep 17 00:00:00 2001 From: Karsten Thoms Date: Mon, 3 Dec 2018 12:13:36 +0100 Subject: [PATCH 13/18] Wizard documentation Signed-off-by: Karsten Thoms --- .../_posts/releasenotes/2018-12-04-version-2-16-0.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index bef4168c8ab..6801dd848d1 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -91,7 +91,12 @@ class QuickfixTest extends AbstractQuickfixTest { ## New Project Wizard -The New Xtext Project wizard selects JUnit 5 as default now. +* The New Xtext Project wizard selects JUnit 5 as default now. +* _Maven_ build support: the `maven-clean-plugin` configuration in the parent `pom.xml` has been fixed. +* _Gradle_ build support: Upgrade to Gradle wrapper 4.10.2. + + + ## Parallel Project Build Support From b74efe6e55d1817ffed019031cf881800f90e769 Mon Sep 17 00:00:00 2001 From: Karsten Thoms Date: Mon, 3 Dec 2018 12:25:54 +0100 Subject: [PATCH 14/18] Xbase Library: Two-dim-array support Signed-off-by: Karsten Thoms --- xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 62561596222..ea1469275e4 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -68,8 +68,9 @@ class QuickfixTest extends AbstractQuickfixTest { * _Maven_ build support: the `maven-clean-plugin` configuration in the parent `pom.xml` has been fixed. * _Gradle_ build support: Upgrade to Gradle wrapper 4.10.2. +## Xbase Library - +The Xbase library supports now accessors for two-dimensional arrays. ## Parallel Project Build Support From 3cc5cba686b9de2b5ce14528af354e9fcdc0cbd9 Mon Sep 17 00:00:00 2001 From: Christian Dietrich Date: Mon, 3 Dec 2018 12:49:33 +0100 Subject: [PATCH 15/18] fixed markdown lint issues Signed-off-by: Christian Dietrich --- .../releasenotes/2018-12-04-version-2-16-0.md | 13 ++++--- .../releasenotes/2018-12-04-version-2-16-0.md | 35 ++++++++++--------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index b260e5344ed..c2e154bae2a 100644 --- a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -12,27 +12,26 @@ This release focuses on stability, performance and the compatibility with Eclips Inside Xtend source files, hovering over a link inside a Javadoc will now display the Javadoc comments in a hover pop-up. F3 is also supported on these links. -![]({{site.baseurl}}/images/releasenotes/2_16_hover_javadoc_link.png) +![Hover Example]({{site.baseurl}}/images/releasenotes/2_16_hover_javadoc_link.png) ## Triple-equals quickfix is now a multifix Warnings of the type `The operator '!=' should be replaced by '!==' when null is one of the arguments.` could only be fixed one by one. The quickfix has been extended to allow fixing multiple issues at once. ## Deprecation of GWT + We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). ## Outlook for 2.17 + Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17. ## Fixed Issues As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a TODO issues and almost TODO pull requests have made it into this release. For further details please refer to the following lists: +* [Fixed GitHub issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) -- [Fixed GitHub issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) - -- [Closed Pull Requests](https://github.com/search?utf8=%E2%9C%93&q=is%3Apr+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) - -- [Fixed Eclipse Bugzilla tickets](https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&classification=Modeling&classification=Tools&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&f0=OP&f1=OP&f3=CP&f4=CP&known_name=Xtext%202.16&list_id=16618269&product=TMF&product=Xtend&query_based_on=Xtext%202.16&query_format=advanced&status_whiteboard=v2.16&status_whiteboard_type=allwordssubstr) - +* [Closed Pull Requests](https://github.com/search?utf8=%E2%9C%93&q=is%3Apr+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) +* [Fixed Eclipse Bugzilla tickets](https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&classification=Modeling&classification=Tools&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&f0=OP&f1=OP&f3=CP&f4=CP&known_name=Xtext%202.16&list_id=16618269&product=TMF&product=Xtend&query_based_on=Xtext%202.16&query_format=advanced&status_whiteboard=v2.16&status_whiteboard_type=allwordssubstr) diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 74083bba6ab..6fc5a56d0c9 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -20,15 +20,15 @@ Java 11 has been released in September 2018 and [Xtext is in preparation](https: ### Quickfix testing API -A new base class [`AbstractQuickfixTest`](https://github.com/eclipse/xtext-eclipse/blob/master/org.eclipse.xtext.ui.tests/tests/org/eclipse/xtext/ui/tests/editor/quickfix/AbstractQuickfixTest.java) allows the definition of test cases for quickfixes. Quickfixes can be tested by using the method +A new base class [`AbstractQuickfixTest`](https://github.com/eclipse/xtext-eclipse/blob/master/org.eclipse.xtext.ui.tests/tests/org/eclipse/xtext/ui/tests/editor/quickfix/AbstractQuickfixTest.java) allows the definition of test cases for quickfixes. Quickfixes can be tested by using the method -``` +```java public void testQuickfixesOn(CharSequence model, String issueCode, Quickfix... quickfixes) ``` This method takes the original DSL text as its first argument. The second argument is the issue code of the problem that can be fixed by the quickfixes under test. Finally the third argument is an array of `Quickfix` testing instances. A testable Quickfix defines a label, a description and the expected resulting DSL text. -``` +```xtend @Data protected static class Quickfix { String label @@ -39,15 +39,14 @@ This method takes the original DSL text as its first argument. The second argume The Xtext example projects Domainmodel, Statemachine and Home Automation do include exemplary tests to demonstrate its usage. The Domainmodel example's quickfix test looks like this: -``` +```xtend class QuickfixTest extends AbstractQuickfixTest { @Before def void setup() { - projectName.createJavaProject } - @Test + @Test def fix_invalid_entity_name() { ''' entity blog { @@ -70,11 +69,11 @@ class QuickfixTest extends AbstractQuickfixTest { ## Xbase Library -The Xbase library supports now accessors for two-dimensional arrays. +The Xbase library supports now accessors for two-dimensional arrays. ## Parallel Project Build Support -With Eclipse 4.8 (Photon) the Eclipse Platform is supporting parallel build of projects in the workspace. Enabling this feature requires that all configured builders of a project are defining a fine grained scheduling rule. For the XtextBuilder the scheduling rule is configurable by preference now. +With Eclipse 4.8 (Photon) the Eclipse Platform is supporting parallel build of projects in the workspace. Enabling this feature requires that all configured builders of a project are defining a fine grained scheduling rule. For the XtextBuilder the scheduling rule is configurable by preference now. The preference is not configurable through preference pages. To enable it, set the `org.eclipse.xtext.builder/schedulingrule` preference option programmatically or by providing a preference file. The supported values are: @@ -89,7 +88,7 @@ This feature is _experimental_ for now. ### Upgrade to Eclipse LSP4J 0.6.0 -Xtext 2.16 integrates Eclipse LSP4J version 0.6.0. +Xtext 2.16 integrates Eclipse LSP4J version 0.6.0. ### Hierarchical Document Symbols @@ -97,7 +96,7 @@ Xtext now supports the _hierarchical document symbols_ as a response to the `tex ### Configurable Server Exit Behavior -The default behavior on receiving the `exit` command of Xtext language servers was to call `System.exit` and thus terminate the JVM. While this is desirable when a host process is shut down (like termination of the editing tool), it harms [scenarios](https://github.com/eclipse/xtext-core/issues/885) where the language server and client run on the same JVM. +The default behavior on receiving the `exit` command of Xtext language servers was to call `System.exit` and thus terminate the JVM. While this is desirable when a host process is shut down (like termination of the editing tool), it harms [scenarios](https://github.com/eclipse/xtext-core/issues/885) where the language server and client run on the same JVM. To support both use cases, the `exit` command is now delegated to the `ILanguageServerShutdownAndExitHandler`. Its default implementation `ILanguageServerShutdownAndExitHandler.DefaultImpl` preserves the existing behavior and invokes `System.exit()`. For embedded scenarios, the interface can be bound to `ILanguageServerShutdownAndExitHandler.NullImpl` instead, which ignores the exit request and keeps the JVM alive. @@ -108,18 +107,21 @@ The Eclipse Platform has changed the release cadence after its Photon release (4 This has now been enforced by constraining the lower bound of all bundles of the Eclipse Platform. As a consequence, Xtext 2.16 can no longer be installed on an older Eclipse release. ## Deprecation of GWT + We will no longer maintain the GWT versions of Xbase and Xtend Lib. The corresponding jars will be no longer published with future versions of Xtext (likely from 2.17 on). ## Outlook for 2.17 + Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17 ## A word on Tycho 1.3 + Tycho 1.3 will be released a few days after the Xtext. So if you are keen on using it you can add `1.3.0-SNAPSHOT` as tycho version to your pom file and the tycho snapshot repository as well. -``` +```xml - tycho-snapshots - https://repo.eclipse.org/content/repositories/tycho-snapshots/ + tycho-snapshots + https://repo.eclipse.org/content/repositories/tycho-snapshots/ ``` @@ -127,9 +129,8 @@ Tycho 1.3 will be released a few days after the Xtext. So if you are keen on usi As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. Almost 100 issues and 300 pull requests have made it into this release. For further details please refer to the following lists: -- [Fixed GitHub issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) - -- [Closed Pull Requests](https://github.com/search?utf8=%E2%9C%93&q=is%3Apr+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) +* [Fixed GitHub issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) -- [Fixed Eclipse Bugzilla tickets](https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&classification=Modeling&classification=Tools&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&f0=OP&f1=OP&f3=CP&f4=CP&known_name=Xtext%202.16&list_id=16618269&product=TMF&product=Xtend&query_based_on=Xtext%202.16&query_format=advanced&status_whiteboard=v2.16&status_whiteboard_type=allwordssubstr) +* [Closed Pull Requests](https://github.com/search?utf8=%E2%9C%93&q=is%3Apr+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) +* [Fixed Eclipse Bugzilla tickets](https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&classification=Modeling&classification=Tools&columnlist=product%2Ccomponent%2Cassigned_to%2Cbug_status%2Cresolution%2Cshort_desc%2Cchangeddate%2Ckeywords&f0=OP&f1=OP&f3=CP&f4=CP&known_name=Xtext%202.16&list_id=16618269&product=TMF&product=Xtend&query_based_on=Xtext%202.16&query_format=advanced&status_whiteboard=v2.16&status_whiteboard_type=allwordssubstr) From d3ea40d5e1a303266ea7e2196a6bc81cfa564f2e Mon Sep 17 00:00:00 2001 From: Karsten Thoms Date: Tue, 4 Dec 2018 15:10:52 +0100 Subject: [PATCH 16/18] Fix link to AbstractQuickfixTest Signed-off-by: Karsten Thoms --- xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index ea1469275e4..e631205b2b4 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -20,7 +20,7 @@ Java 11 has been released in September 2018 and [Xtext is in preparation](https: ### Quickfix testing API -A new base class [`AbstractQuickfixTest`](https://github.com/eclipse/xtext-eclipse/blob/master/org.eclipse.xtext.ui.tests/tests/org/eclipse/xtext/ui/tests/editor/quickfix/AbstractQuickfixTest.java) allows the definition of test cases for quickfixes. Quickfixes can be tested by using the method +A new base class [`AbstractQuickfixTest`](https://github.com/eclipse/xtext-eclipse/blob/master/org.eclipse.xtext.ui.testing/src/org/eclipse/xtext/ui/testing/AbstractQuickfixTest.xtend) allows the definition of test cases for quickfixes. Quickfixes can be tested by using the method ``` public void testQuickfixesOn(CharSequence model, String issueCode, Quickfix... quickfixes) From 18384381f4caf2d2d5669f4ac802535e49a0806f Mon Sep 17 00:00:00 2001 From: Karsten Thoms Date: Tue, 4 Dec 2018 15:30:29 +0100 Subject: [PATCH 17/18] Update issue & PR count Signed-off-by: Karsten Thoms --- xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 8bb6cbe3b03..42d87632bba 100644 --- a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -26,7 +26,7 @@ Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17 ## Fixed Issues -As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a TODO issues and almost TODO pull requests have made it into this release. For further details please refer to the following lists: +As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than 90 issues and almost 300 pull requests have made it into this release. For further details please refer to the following lists: - [Fixed GitHub issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) From ac20bd2b8057afa87870f3a86c3fd853287f00a9 Mon Sep 17 00:00:00 2001 From: Karsten Thoms Date: Tue, 4 Dec 2018 16:00:19 +0100 Subject: [PATCH 18/18] Xtext/Xtend 2.16 release post: publish => true Signed-off-by: Karsten Thoms --- .../_posts/releasenotes/2018-12-04-version-2-16-0.md | 4 ++-- .../_posts/releasenotes/2018-12-04-version-2-16-0.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index c2e154bae2a..053f946ff8f 100644 --- a/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtend-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -3,7 +3,7 @@ layout: post title: Xtend 2.16.0 Release Notes date: 2018-12-04 categories: releasenotes -published: false +published: true --- This release focuses on stability, performance and the compatibility with Eclipse 2018-12. @@ -28,7 +28,7 @@ Java 11 Support, a Maven BOM and a new MWE version are planned for 2.17. ## Fixed Issues -As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than a TODO issues and almost TODO pull requests have made it into this release. For further details please refer to the following lists: +As in every release cycle we were eagerly hunting down bugs, and reviewed and integrated plenty of contributions. More than 90 issues and almost TODO pull requests have made it into this release. For further details please refer to the following lists: * [Fixed GitHub issues](https://github.com/search?utf8=%E2%9C%93&q=is%3Aissue+milestone%3ARelease_2.16+is%3Aclosed+repo%3Aeclipse%2Fxtext+repo%3Aeclipse%2Fxtext-core+repo%3Aeclipse%2Fxtext-lib+repo%3Aeclipse%2Fxtext-extras+repo%3Aeclipse%2Fxtext-eclipse+repo%3Aeclipse%2Fxtext-idea+repo%3Aeclipse%2Fxtext-web+repo%3Aeclipse%2Fxtext-maven+repo%3Aeclipse%2Fxtext-xtend&type=Issues&ref=searchresults) diff --git a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md index 5e66bb79070..19421d4816f 100644 --- a/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md +++ b/xtext-website/_posts/releasenotes/2018-12-04-version-2-16-0.md @@ -3,7 +3,7 @@ layout: post title: Xtext 2.16.0 Release Notes date: 2018-12-04 categories: releasenotes -published: false +published: true --- This release focuses on stability, performance and the compatibility with Eclipse 2018-12.