Workaround to get name of referenced variable @0.5 · Nodeclipse/coffeescript-eclipse@2794633 · GitHub
Skip to content

Commit 2794633

Browse files
committed
Workaround to get name of referenced variable @0.5
--HG-- branch : implicit-variable
1 parent c20bd24 commit 2794633

4 files changed

Lines changed: 115 additions & 3 deletions

File tree

‎example/csep.example.cake/src/csep/example/cake/CakefileRuntimeModule.java‎

Lines changed: 8 additions & 0 deletions

‎example/csep.example.cake/src/csep/example/cake/scoping/CakefileScopeProvider.java‎

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@
55

66
import org.eclipse.emf.ecore.EObject;
77
import org.eclipse.emf.ecore.EReference;
8+
import org.eclipse.xtext.linking.impl.LinkingHelper;
9+
import org.eclipse.xtext.nodemodel.INode;
810
import org.eclipse.xtext.scoping.IScope;
911
import org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider;
1012

13+
import com.google.inject.Inject;
14+
1115
import csep.coffeeScript.Block;
1216
import csep.example.cake.cakefile.TaskDeclaration;
1317

@@ -18,9 +22,26 @@
1822
* on how and when to use it
1923
*
2024
*/
21-
public class CakefileScopeProvider extends AbstractDeclarativeScopeProvider {
22-
25+
public class CakefileScopeProvider extends AbstractDeclarativeScopeProvider implements IScopeProviderWithNode {
26+
@Inject
27+
private LinkingHelper linkingHelper;
28+
29+
INode node;
30+
2331
public IScope scope_Id(TaskDeclaration owner, EReference ref) {
24-
return null;//IScope.NULLSCOPE;
32+
String crossrefName = linkingHelper.getCrossRefNodeAsString(node, true);
33+
if ("options".equals(crossrefName)) {
34+
// TODO: create a scope with it
35+
return IScope.NULLSCOPE;
36+
}
37+
else {
38+
// Let superclass handle it
39+
return null;
40+
}
41+
}
42+
43+
@Override
44+
public void setNode(INode node) {
45+
this.node = node;
2546
}
2647
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package csep.example.cake.scoping;
2+
3+
import org.eclipse.xtext.nodemodel.INode;
4+
import org.eclipse.xtext.scoping.IScopeProvider;
5+
6+
public interface IScopeProviderWithNode extends IScopeProvider {
7+
8+
void setNode(INode node);
9+
}
Lines changed: 74 additions & 0 deletions

0 commit comments

Comments
 (0)