Как заставить работать GraalVM javado c примеров? - PullRequest
1 голос
/ 10 апреля 2020

Я не могу заставить работать примеры из GraalVM javado c для метода public Value asValue(Object hostValue)

Basic Examples: The following assertion statements always hold:

 Context context = Context.create();
 assert context.asValue(null).isNull();
 assert context.asValue(42).isNumber();
 assert context.asValue("42").isString();
 assert context.asValue('c').isString();
 assert context.asValue(new String[0]).hasArrayElements();
 assert context.asValue(new ArrayList<>()).isHostObject();
 assert context.asValue(new ArrayList<>()).hasArrayElements();
 assert context.asValue((Supplier) () -> 42).execute().asInt() == 42;

, поскольку некоторые утверждения не выполнены (hasArrayElements() и Functional Interface ):

Мой java класс:

$ cat Test.java
import java.util.ArrayList;
import java.util.function.Supplier;
import org.graalvm.polyglot.Context;
import org.graalvm.polyglot.Value;

public class Test {

  public static void main( String[] args ) {
    try ( Context context = Context.create() ) {
    assert context.asValue(null).isNull();
    assert context.asValue(42).isNumber();
    assert context.asValue("42").isString();
    assert context.asValue('c').isString();
    assert context.asValue(new String[0]).hasArrayElements() : "String[].hasArrayElements() failed";
    assert context.asValue(new ArrayList<>()).isHostObject();
    assert context.asValue(new ArrayList<>()).hasArrayElements();
    assert context.asValue((Supplier) () -> 42).execute().asInt() == 42;
    }
  }
}

результат:

$ /opt/graalvm-ce-java11-20.0.0/bin/javac Test.java; /opt/graalvm-ce-java11-20.0.0/bin/java -ea Test
Exception in thread "main" java.lang.AssertionError: String[].hasArrayElements() failed
    at Test.main(Test.java:14)

Что я делаю не так? ..

1 Ответ

0 голосов
/ 11 апреля 2020

В лучшем случае документация устарела, в худшем - это ошибка. Вы должны подать вопрос для трюфеля: https://github.com/oracle/graal/issues

...