Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLorenzo Bettini2014-08-10 16:48:47 +0000
committerLorenzo Bettini2014-08-10 16:48:47 +0000
commit2c011134672ebfdf37610e336d411a337426e8a4 (patch)
treefe64da001a7aa7f74b54c70ed8dc68c3be1e547b
parent36e02a26af0d47a0f6185c23eb2cac8b09697234 (diff)
downloadorg.eclipse.emf-parsley-2c011134672ebfdf37610e336d411a337426e8a4.tar.gz
org.eclipse.emf-parsley-2c011134672ebfdf37610e336d411a337426e8a4.tar.xz
org.eclipse.emf-parsley-2c011134672ebfdf37610e336d411a337426e8a4.zip
441368: type of fields is mandatory
Change-Id: I45bf228187a1721d4f02b013936609cf85bd70fc Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=441368
-rw-r--r--dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGeneratorTests.xtend32
-rw-r--r--dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestExtensions.java18
-rw-r--r--dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestInputs.xtend21
-rw-r--r--dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/EmfParsleyDsl.xtext2
-rw-r--r--dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend13
5 files changed, 79 insertions, 7 deletions
diff --git a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGeneratorTests.xtend b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGeneratorTests.xtend
index cde8a9d21..5f1a10756 100644
--- a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGeneratorTests.xtend
+++ b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/EmfParsleyDslGeneratorTests.xtend
@@ -298,9 +298,16 @@ expectedLabelProvider =
package my.empty.ui.provider;
import com.google.inject.Inject;
+import java.util.ArrayList;
+import java.util.List;
import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.parsley.dsl.tests.inputs.TestExtensions;
+import org.eclipse.emf.parsley.examples.library.Library;
import org.eclipse.emf.parsley.ui.provider.ViewerLabelProvider;
import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.xtext.xbase.lib.Extension;
+import org.eclipse.xtext.xbase.lib.ObjectExtensions;
+import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
@SuppressWarnings("all")
public class LabelProviderGen extends ViewerLabelProvider {
@@ -315,10 +322,35 @@ public class LabelProviderGen extends ViewerLabelProvider {
this.parentLabelProvider = parentLabelProvider;
}
+ @Extension
+ private final TestExtensions myExtensions = new TestExtensions();
+
+ public TestExtensions getMyExtensions() {
+ return this.myExtensions;
+ }
+
+ private final List<String> listOfString = ObjectExtensions.<ArrayList<String>>operator_doubleArrow(new ArrayList<String>(), new Procedure1<ArrayList<String>>() {
+ public void apply(final ArrayList<String> it) {
+ it.add("first");
+ it.add("second");
+ }
+ });
+
+ public List<String> getListOfString() {
+ return this.listOfString;
+ }
+
@Inject
public LabelProviderGen(final AdapterFactoryLabelProvider delegate) {
super(delegate);
}
+
+ public String text(final Library it) {
+ final ArrayList<Object> myList = new ArrayList<Object>();
+ this.myExtensions.printList(myList);
+ String _text = this.parentLabelProvider.getText(it);
+ return ("result: " + _text);
+ }
}
''']
)
diff --git a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestExtensions.java b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestExtensions.java
new file mode 100644
index 000000000..dce666f9a
--- /dev/null
+++ b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestExtensions.java
@@ -0,0 +1,18 @@
+package org.eclipse.emf.parsley.dsl.tests.inputs;
+
+import java.util.List;
+
+/**
+ * This is used to test fields with extension
+ *
+ * @author Lorenzo Bettini
+ */
+public class TestExtensions {
+ public TestExtensions() {
+
+ }
+
+ public void printList(List<Object> l) {
+
+ }
+} \ No newline at end of file
diff --git a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestInputs.xtend b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestInputs.xtend
index eef7c531b..8e3102e27 100644
--- a/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestInputs.xtend
+++ b/dsl/org.eclipse.emf.parsley.dsl.tests/src/org/eclipse/emf/parsley/dsl/tests/inputs/TestInputs.xtend
@@ -131,13 +131,34 @@ module my.empty {
def labelProviderWithFields()
'''
+import java.util.ArrayList
+import java.util.List
import com.google.inject.Inject
import org.eclipse.jface.viewers.ILabelProvider
+import org.eclipse.emf.parsley.dsl.tests.inputs.TestExtensions
+import org.eclipse.emf.parsley.examples.library.Library
module my.empty {
labelProvider {
@Inject
var ILabelProvider parentLabelProvider;
+
+ //
+ val extension TestExtensions myExtensions = new TestExtensions();
+
+ // initialize it with a complex expression
+ val List<String> listOfString = new ArrayList() => [
+ it += "first"
+ it += "second"
+ ]
+
+ text {
+ Library -> {
+ val myList = new ArrayList()
+ myList.printList() // extension method from TestExtensions
+ return 'result: ' + parentLabelProvider.getText(it)
+ }
+ }
}
}
'''
diff --git a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/EmfParsleyDsl.xtext b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/EmfParsleyDsl.xtext
index 446f22ef7..24eb3bfc2 100644
--- a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/EmfParsleyDsl.xtext
+++ b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/EmfParsleyDsl.xtext
@@ -64,7 +64,7 @@ LabelProvider:
FieldSpecification:
annotations+=XAnnotation*
(writeable?='var'|'val') extension?='extension'?
- (=>(type=JvmTypeReference name=ValidID) | name=ValidID) ('=' right=XExpression)? ';'?
+ type=JvmTypeReference name=ValidID ('=' right=XExpression)? ';'?
;
TableLabelProvider:
diff --git a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend
index bfbc8d68e..adc6f9ff4 100644
--- a/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend
+++ b/dsl/org.eclipse.emf.parsley.dsl/src/org/eclipse/emf/parsley/dsl/jvmmodel/EmfParsleyDslJvmModelInferrer.xtend
@@ -183,19 +183,20 @@ class EmfParsleyDslJvmModelInferrer extends AbstractModelInferrer {
def processFields(JvmGenericType it, WithFields dslElement) {
for (f : dslElement.fields) {
var type = f.type
+ val name = f.name
val initialExp = f.right
- if (type == null && initialExp != null) {
- type = initialExp.inferredType
- }
- members += f.toField(f.name, type) => [
+ members += f.toField(name, type) => [
final = !f.writeable
visibility = JvmVisibility.PRIVATE
translateAnnotations(f.annotations)
+ if (f.extension) {
+ annotations += f.toAnnotation(typeof(Extension))
+ }
initializer = initialExp
]
- members += f.toGetter(f.name, type)
+ members += f.toGetter(name, type)
if (f.writeable) {
- members += f.toSetter(f.name, type)
+ members += f.toSetter(name, type)
}
}
}

Back to the top