Mercurial > hg > truffle
diff truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java @ 22066:78c3d3d8d86e
Clearly separating the TruffleLanguage definition from context used during its execution. TruffleLanguage now has to have public static field INSTANCE and override createContext method.
author | Jaroslav Tulach <jaroslav.tulach@oracle.com> |
---|---|
date | Thu, 06 Aug 2015 08:31:49 +0200 |
parents | e7c2d36daf72 |
children | dc83cc1f94f2 3aad794eec0e |
line wrap: on
line diff
--- a/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java Wed Aug 05 10:19:41 2015 -0700 +++ b/truffle/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java Thu Aug 06 08:31:49 2015 +0200 @@ -48,11 +48,11 @@ public static final class MyLangNoSubclass { } - @ExpectError("Language must have a public constructor accepting TruffleLanguage.Env as parameter") + @ExpectError("Language class must have public static final singleton field called INSTANCE") @TruffleLanguage.Registration(name = "myLangNoCnstr", version = "0", mimeType = "text/x-my") - public static final class MyLangWrongConstr extends TruffleLanguage { + public static final class MyLangWrongConstr extends TruffleLanguage<Object> { private MyLangWrongConstr() { - super(null); + super(); } @Override @@ -61,12 +61,12 @@ } @Override - protected Object findExportedSymbol(String globalName, boolean onlyExplicit) { + protected Object findExportedSymbol(Object context, String globalName, boolean onlyExplicit) { return null; } @Override - protected Object getLanguageGlobal() { + protected Object getLanguageGlobal(Object context) { return null; } @@ -85,13 +85,18 @@ return null; } + @Override + protected Object createContext(Env env) { + throw new UnsupportedOperationException(); + } + } - @ExpectError("Language must have a public constructor accepting TruffleLanguage.Env as parameter") - @TruffleLanguage.Registration(name = "myLangNoCnstr", version = "0", mimeType = "text/x-my") - public static final class MyLangNoConstr extends TruffleLanguage { - public MyLangNoConstr() { - super(null); + @ExpectError("Language class must have public static final singleton field called INSTANCE") + @TruffleLanguage.Registration(name = "myLangNoField", version = "0", mimeType = "text/x-my") + public static final class MyLangNoField extends TruffleLanguage<Object> { + public MyLangNoField() { + super(); } @Override @@ -100,12 +105,12 @@ } @Override - protected Object findExportedSymbol(String globalName, boolean onlyExplicit) { + protected Object findExportedSymbol(Object context, String globalName, boolean onlyExplicit) { return null; } @Override - protected Object getLanguageGlobal() { + protected Object getLanguageGlobal(Object context) { return null; } @@ -124,21 +129,28 @@ return null; } + @Override + protected Object createContext(Env env) { + throw new UnsupportedOperationException(); + } + } @TruffleLanguage.Registration(name = "myLangGood", version = "0", mimeType = "text/x-my") - public static final class MyLangGood extends TruffleLanguage { - public MyLangGood(TruffleLanguage.Env env) { - super(env); + public static final class MyLangGood extends TruffleLanguage<Object> { + private MyLangGood() { + super(); } + public static final MyLangGood INSTANCE = new MyLangGood(); + @Override - protected Object findExportedSymbol(String globalName, boolean onlyExplicit) { + protected Object findExportedSymbol(Object context, String globalName, boolean onlyExplicit) { return null; } @Override - protected Object getLanguageGlobal() { + protected Object getLanguageGlobal(Object context) { return null; } @@ -162,5 +174,10 @@ throw new IOException(); } + @Override + protected Object createContext(Env env) { + return env; + } + } }