1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
/* Scala.js compiler
* Copyright 2013 LAMP/EPFL
* @author Sébastien Doeraene
*/
package scala.scalajs.compiler
import scala.tools.nsc._
/** Core definitions for Scala.js
*
* @author Sébastien Doeraene
*/
trait JSDefinitions { self: JSGlobalAddons =>
import global._
object jsDefinitions extends JSDefinitionsClass
import definitions._
import rootMirror._
class JSDefinitionsClass {
lazy val ScalaJSJSPackage = getPackage(newTermNameCached("scala.scalajs.js")) // compat 2.10/2.11
lazy val JSPackage_undefined = getMemberMethod(ScalaJSJSPackage, newTermName("undefined"))
lazy val JSPackage_isUndefined = getMemberMethod(ScalaJSJSPackage, newTermName("isUndefined"))
lazy val JSPackage_typeOf = getMemberMethod(ScalaJSJSPackage, newTermName("typeOf"))
lazy val JSPackage_debugger = getMemberMethod(ScalaJSJSPackage, newTermName("debugger"))
lazy val JSPackage_native = getMemberMethod(ScalaJSJSPackage, newTermName("native"))
lazy val ScalaJSJSPrimPackage = getPackage(newTermNameCached("scala.scalajs.js.prim")) // compat 2.10/2.11
lazy val JSAnyClass = getRequiredClass("scala.scalajs.js.Any")
lazy val JSDynamicClass = getRequiredClass("scala.scalajs.js.Dynamic")
lazy val JSDynamic_selectDynamic = getMemberMethod(JSDynamicClass, newTermName("selectDynamic"))
lazy val JSDynamic_updateDynamic = getMemberMethod(JSDynamicClass, newTermName("updateDynamic"))
lazy val JSDynamic_applyDynamic = getMemberMethod(JSDynamicClass, newTermName("applyDynamic"))
lazy val JSDictionaryClass = getRequiredClass("scala.scalajs.js.Dictionary")
lazy val JSDictionary_delete = getMemberMethod(JSDictionaryClass, newTermName("delete"))
lazy val JSNumberClass = getRequiredClass("scala.scalajs.js.prim.Number")
lazy val JSBooleanClass = getRequiredClass("scala.scalajs.js.prim.Boolean")
lazy val JSStringClass = getRequiredClass("scala.scalajs.js.prim.String")
lazy val JSUndefinedClass = getRequiredClass("scala.scalajs.js.prim.Undefined")
lazy val JSObjectClass = getRequiredClass("scala.scalajs.js.Object")
lazy val JSThisFunctionClass = getRequiredClass("scala.scalajs.js.ThisFunction")
lazy val JSGlobalScopeClass = getRequiredClass("scala.scalajs.js.GlobalScope")
lazy val UndefOrClass = getRequiredClass("scala.scalajs.js.UndefOr")
lazy val JSArrayClass = getRequiredClass("scala.scalajs.js.Array")
lazy val JSArray_apply = getMemberMethod(JSArrayClass, newTermName("apply"))
lazy val JSArray_update = getMemberMethod(JSArrayClass, newTermName("update"))
lazy val JSFunctionClasses = (0 to 22) map (n => getRequiredClass("scala.scalajs.js.Function"+n))
lazy val JSThisFunctionClasses = (0 to 21) map (n => getRequiredClass("scala.scalajs.js.ThisFunction"+n))
lazy val AllJSFunctionClasses = JSFunctionClasses ++ JSThisFunctionClasses
lazy val RuntimeExceptionClass = requiredClass[RuntimeException]
lazy val JavaScriptExceptionClass = getClassIfDefined("scala.scalajs.js.JavaScriptException")
lazy val JSNameAnnotation = getRequiredClass("scala.scalajs.js.annotation.JSName")
lazy val JSBracketAccessAnnotation = getRequiredClass("scala.scalajs.js.annotation.JSBracketAccess")
lazy val JSExportAnnotation = getRequiredClass("scala.scalajs.js.annotation.JSExport")
lazy val JSExportDescendentObjectsAnnotation = getRequiredClass("scala.scalajs.js.annotation.JSExportDescendentObjects")
lazy val JSExportDescendentClassesAnnotation = getRequiredClass("scala.scalajs.js.annotation.JSExportDescendentClasses")
lazy val JSExportAllAnnotation = getRequiredClass("scala.scalajs.js.annotation.JSExportAll")
lazy val JSExportNamedAnnotation = getRequiredClass("scala.scalajs.js.annotation.JSExportNamed")
lazy val JSAnyTpe = JSAnyClass.toTypeConstructor
lazy val JSDynamicTpe = JSDynamicClass.toTypeConstructor
lazy val JSNumberTpe = JSNumberClass.toTypeConstructor
lazy val JSBooleanTpe = JSBooleanClass.toTypeConstructor
lazy val JSStringTpe = JSStringClass.toTypeConstructor
lazy val JSUndefinedTpe = JSUndefinedClass.toTypeConstructor
lazy val JSObjectTpe = JSObjectClass.toTypeConstructor
lazy val JSGlobalScopeTpe = JSGlobalScopeClass.toTypeConstructor
lazy val JSFunctionTpes = JSFunctionClasses.map(_.toTypeConstructor)
lazy val JSAnyModule = JSAnyClass.companionModule
def JSAny_fromFunction(arity: Int) = getMemberMethod(JSAnyModule, newTermName("fromFunction"+arity))
lazy val JSDynamicModule = JSDynamicClass.companionModule
lazy val JSDynamic_newInstance = getMemberMethod(JSDynamicModule, newTermName("newInstance"))
lazy val JSDynamicLiteral = getMemberModule(JSDynamicModule, newTermName("literal"))
lazy val JSDynamicLiteral_applyDynamicNamed = getMemberMethod(JSDynamicLiteral, newTermName("applyDynamicNamed"))
lazy val JSDynamicLiteral_applyDynamic = getMemberMethod(JSDynamicLiteral, newTermName("applyDynamic"))
lazy val JSObjectModule = JSObjectClass.companionModule
lazy val JSObject_hasProperty = getMemberMethod(JSObjectModule, newTermName("hasProperty"))
lazy val JSObject_properties = getMemberMethod(JSObjectModule, newTermName("properties"))
lazy val JSArrayModule = JSArrayClass.companionModule
lazy val JSArray_create = getMemberMethod(JSArrayModule, newTermName("apply"))
lazy val JSThisFunctionModule = JSThisFunctionClass.companionModule
def JSThisFunction_fromFunction(arity: Int) = getMemberMethod(JSThisFunctionModule, newTermName("fromFunction"+arity))
lazy val RawJSTypeAnnot = getClassIfDefined("scala.scalajs.js.annotation.RawJSType")
lazy val RuntimeStringModule = getRequiredModule("scala.scalajs.runtime.RuntimeString")
lazy val RuntimeStringModuleClass = RuntimeStringModule.moduleClass
lazy val BooleanReflectiveCallClass = getRequiredClass("scala.scalajs.runtime.BooleanReflectiveCall")
lazy val NumberReflectiveCallClass = getRequiredClass("scala.scalajs.runtime.NumberReflectiveCall")
lazy val IntegerReflectiveCallClass = getRequiredClass("scala.scalajs.runtime.IntegerReflectiveCall")
lazy val RuntimePackageModule = getPackageObject("scala.scalajs.runtime")
lazy val Runtime_wrapJavaScriptException = getMemberMethod(RuntimePackageModule, newTermName("wrapJavaScriptException"))
lazy val Runtime_unwrapJavaScriptException = getMemberMethod(RuntimePackageModule, newTermName("unwrapJavaScriptException"))
lazy val Runtime_genTraversableOnce2jsArray = getMemberMethod(RuntimePackageModule, newTermName("genTraversableOnce2jsArray"))
lazy val Runtime_newJSObjectWithVarargs = getMemberMethod(RuntimePackageModule, newTermName("newJSObjectWithVarargs"))
lazy val Runtime_propertiesOf = getMemberMethod(RuntimePackageModule, newTermName("propertiesOf"))
lazy val WrappedArrayClass = getRequiredClass("scala.scalajs.js.WrappedArray")
lazy val WrappedArray_ctor = WrappedArrayClass.primaryConstructor
// This is a def, since similar symbols (arrayUpdateMethod, etc.) are in runDefinitions
// (rather than definitions) and we weren't sure if it is safe to make this a lazy val
def ScalaRunTime_isArray = getMemberMethod(ScalaRunTimeModule, newTermName("isArray")).suchThat(_.tpe.params.size == 2)
lazy val BoxesRunTime_boxToCharacter = getMemberMethod(BoxesRunTimeModule, newTermName("boxToCharacter"))
lazy val BoxesRunTime_unboxToChar = getMemberMethod(BoxesRunTimeModule, newTermName("unboxToChar"))
}
}
|