2009-07-17 4 views
0

для выполнения JavaScript в Rhino необходимо создать контекст выполнения для скрипта. Конструктор Context class использует уровень соответствия JavaScript VERSION_DEFAULT.Mozilla Rhino: Стандарт соответствия JavaScript по умолчанию

protected Context(ContextFactory factory) { 
    if(factory == null) { 
     throw new IllegalArgumentException("factory == null"); 
    } 
    this.factory = factory; 
    **setLanguageVersion(VERSION_DEFAULT);** 
    optimizationLevel = codegenClass != null ? 0 : -1; 
    maximumInterpreterStackDepth = Integer.MAX_VALUE; 
} 

Как я не могу найти отображение VERSION_DEFAULT на любой из реальных VERSION_XXX констант в API, я задаюсь вопросом, который JavaScript уровень соответствия VERSION_DEFAULT есть. В примечании к выпуску Rhino 1.7R1 (* ttps: //developer.mozilla.org/en/New_in_Rhino_1.7R1) указано, что нужно явно указать версию JavaScript, но в нем не упоминается, какая версия используется, когда Context.setLanguageVersion() опущен ,

+0

это с открытым исходным кодом ... – geowa4

+0

Возможно, вам стоит задать этот вопрос в списке рассылки Mozilla Rhino. –

ответ

1

Просматривая большую часть кода Rhino, похоже, что большая часть тестирования на языковой версии является отрицательным тестированием, например.

 
if (getLanguageVersion() != Context.VERSION_1_2) { 
    return paramCount; 
} 

VERSION_DEFAULT определяется как «0», так что единственное место, где он выглядит, как он должен был бы быть установлен как 1,7 является поддержка «пусть» и «доходности» ключевые слова из-за этого кода из TokenStream:

 
if ((result == Token.LET || result == Token.YIELD) && 
    parser.compilerEnv.getLanguageVersion() 
    < Context.VERSION_1_7) 
{ 
    // LET and YIELD are tokens only in 1.7 and later 
    result = Token.NAME; 
} 
Смежные вопросы