Mercurial > hg > graal-compiler
changeset 21889:45083be8a812
Truffle: add a version string to the information provided with Language registration
author | Michael Van De Vanter <michael.van.de.vanter@oracle.com> |
---|---|
date | Fri, 05 Jun 2015 18:05:13 -0700 |
parents | c052d68e7eac |
children | 894f82515e38 |
files | graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java graal/com.oracle.truffle.api/src/com/oracle/truffle/api/vm/TruffleVM.java graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/LanguageRegistrationProcessor.java graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLMain.java |
diffstat | 6 files changed, 39 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java Fri Jun 05 23:05:16 2015 +0200 +++ b/graal/com.oracle.truffle.api.dsl.test/src/com/oracle/truffle/api/dsl/test/processor/LanguageRegistrationTest.java Fri Jun 05 18:05:13 2015 -0700 @@ -31,22 +31,22 @@ public class LanguageRegistrationTest { @ExpectError("Registered language class must be public") - @TruffleLanguage.Registration(name = "myLang", mimeType = "text/x-my") + @TruffleLanguage.Registration(name = "myLang", version = "0", mimeType = "text/x-my") private static final class MyLang { } @ExpectError("Registered language inner-class must be static") - @TruffleLanguage.Registration(name = "myLangNonStatic", mimeType = "text/x-my") + @TruffleLanguage.Registration(name = "myLangNonStatic", version = "0", mimeType = "text/x-my") public final class MyLangNonStatic { } @ExpectError("Registered language class must subclass TruffleLanguage") - @TruffleLanguage.Registration(name = "myLang", mimeType = "text/x-my") + @TruffleLanguage.Registration(name = "myLang", version = "0", mimeType = "text/x-my") public static final class MyLangNoSubclass { } @ExpectError("Language must have a public constructor accepting TruffleLanguage.Env as parameter") - @TruffleLanguage.Registration(name = "myLangNoCnstr", mimeType = "text/x-my") + @TruffleLanguage.Registration(name = "myLangNoCnstr", version = "0", mimeType = "text/x-my") public static final class MyLangWrongConstr extends TruffleLanguage { private MyLangWrongConstr() { super(null); @@ -74,7 +74,7 @@ } @ExpectError("Language must have a public constructor accepting TruffleLanguage.Env as parameter") - @TruffleLanguage.Registration(name = "myLangNoCnstr", mimeType = "text/x-my") + @TruffleLanguage.Registration(name = "myLangNoCnstr", version = "0", mimeType = "text/x-my") public static final class MyLangNoConstr extends TruffleLanguage { public MyLangNoConstr() { super(null); @@ -101,7 +101,7 @@ } } - @TruffleLanguage.Registration(name = "myLangGood", mimeType = "text/x-my") + @TruffleLanguage.Registration(name = "myLangGood", version = "0", mimeType = "text/x-my") public static final class MyLangGood extends TruffleLanguage { public MyLangGood(TruffleLanguage.Env env) { super(env);
--- a/graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java Fri Jun 05 23:05:16 2015 +0200 +++ b/graal/com.oracle.truffle.api.test/src/com/oracle/truffle/api/test/vm/ImplicitExplicitExportTest.java Fri Jun 05 18:05:13 2015 -0700 @@ -165,21 +165,21 @@ private static final String L2 = "application/x-test-import-export-2"; private static final String L3 = "application/x-test-import-export-3"; - @TruffleLanguage.Registration(mimeType = L1, name = "ImportExport1") + @TruffleLanguage.Registration(mimeType = L1, name = "ImportExport1", version = "0") public static final class ExportImportLanguage1 extends AbstractExportImportLanguage { public ExportImportLanguage1(Env env) { super(env); } } - @TruffleLanguage.Registration(mimeType = L2, name = "ImportExport2") + @TruffleLanguage.Registration(mimeType = L2, name = "ImportExport2", version = "0") public static final class ExportImportLanguage2 extends AbstractExportImportLanguage { public ExportImportLanguage2(Env env) { super(env); } } - @TruffleLanguage.Registration(mimeType = L3, name = "ImportExport3") + @TruffleLanguage.Registration(mimeType = L3, name = "ImportExport3", version = "0") public static final class ExportImportLanguage3 extends AbstractExportImportLanguage { public ExportImportLanguage3(Env env) { super(env);
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java Fri Jun 05 23:05:16 2015 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/TruffleLanguage.java Fri Jun 05 18:05:13 2015 -0700 @@ -72,6 +72,14 @@ String name(); /** + * Unique string identifying the language version. This name will be exposed to users via + * the {@link Language#getVersion()} getter. + * + * @return version of your language + */ + String version(); + + /** * List of MIME types associated with your language. Users will use them (directly or * indirectly) when {@link TruffleVM#eval(java.lang.String, java.lang.String) executing} * their code snippets or their {@link TruffleVM#eval(java.net.URI) files}.
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/vm/TruffleVM.java Fri Jun 05 23:05:16 2015 +0200 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/vm/TruffleVM.java Fri Jun 05 18:05:13 2015 -0700 @@ -448,6 +448,24 @@ return props.getProperty(prefix + "name"); } + /** + * Name of the language version. + * + * @return string specifying the language version + */ + public String getVersion() { + return props.getProperty(prefix + "version"); + } + + /** + * Human readable string that identifies the language and version. + * + * @return string describing the specific language version + */ + public String getShortName() { + return getName() + getVersion(); + } + TruffleLanguage getImpl() { if (impl == null) { String n = props.getProperty(prefix + "className"); @@ -456,7 +474,7 @@ Constructor<?> constructor = langClazz.getConstructor(Env.class); impl = SPI.attachEnv(TruffleVM.this, constructor, out, err, in); } catch (Exception ex) { - throw new IllegalStateException("Cannot initialize " + getName() + " language with implementation " + n, ex); + throw new IllegalStateException("Cannot initialize " + getShortName() + " language with implementation " + n, ex); } } return impl; @@ -464,7 +482,7 @@ @Override public String toString() { - return "[" + getName() + " for " + getMimeTypes() + "]"; + return "[" + getShortName() + " for " + getMimeTypes() + "]"; } } // end of Language
--- a/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/LanguageRegistrationProcessor.java Fri Jun 05 23:05:16 2015 +0200 +++ b/graal/com.oracle.truffle.dsl.processor/src/com/oracle/truffle/dsl/processor/LanguageRegistrationProcessor.java Fri Jun 05 18:05:13 2015 -0700 @@ -56,6 +56,7 @@ String prefix = "language" + ++cnt + "."; String className = processingEnv.getElementUtils().getBinaryName(l).toString(); p.setProperty(prefix + "name", annotation.name()); + p.setProperty(prefix + "version", annotation.version()); p.setProperty(prefix + "className", className); String[] mimes = annotation.mimeType(); for (int i = 0; i < mimes.length; i++) {
--- a/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLMain.java Fri Jun 05 23:05:16 2015 +0200 +++ b/graal/com.oracle.truffle.sl/src/com/oracle/truffle/sl/SLMain.java Fri Jun 05 18:05:13 2015 -0700 @@ -133,7 +133,7 @@ * <em>default printer</em>. * */ -@TruffleLanguage.Registration(name = "sl", mimeType = "application/x-sl") +@TruffleLanguage.Registration(name = "sl", version = "0.5", mimeType = "application/x-sl") public class SLMain extends TruffleLanguage { private static SLMain LAST; private static List<NodeFactory<? extends SLBuiltinNode>> builtins = Collections.emptyList();