forked from Mirror/wren
Relative imports!
This is a breaking change because existing imports in user Wren code that assume the path is relative to the entrypoint file will now likely fail. Also, stack trace output and host API calls that take a module string now need the resolved module string, not the short name that appears in the import.
This commit is contained in:
@ -1,3 +1,3 @@
|
||||
class Foo {
|
||||
foreign someUnknownMethod // expect runtime error: Could not find foreign method 'someUnknownMethod' for class Foo in module 'main'.
|
||||
foreign someUnknownMethod // expect runtime error: Could not find foreign method 'someUnknownMethod' for class Foo in module 'test/language/foreign/unknown_method'.
|
||||
}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import "module" for Module, Other
|
||||
import "./module" for Module, Other
|
||||
|
||||
System.print(Module) // expect: before
|
||||
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
System.print("before") // expect: before
|
||||
import "module" for Module // expect runtime error: Could not compile module 'module'.
|
||||
import "./module" for Module // expect runtime error: Could not compile module 'test/language/module/compile_error/module'.
|
||||
|
||||
@ -3,7 +3,7 @@ System.print("start a")
|
||||
|
||||
var A = "a value"
|
||||
System.print("a defined %(A)")
|
||||
import "b" for B
|
||||
import "./b" for B
|
||||
System.print("a imported %(B)")
|
||||
|
||||
System.print("end a")
|
||||
|
||||
@ -3,7 +3,7 @@ System.print("start b")
|
||||
|
||||
var B = "b value"
|
||||
System.print("b defined %(B)")
|
||||
import "a" for A
|
||||
import "./a" for A
|
||||
System.print("b imported %(A)")
|
||||
|
||||
System.print("end b")
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import "a"
|
||||
import "./a"
|
||||
|
||||
// Shared module should only run once:
|
||||
// expect: start a
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import "module"
|
||||
import "./module"
|
||||
// expect: Bool
|
||||
// expect: Class
|
||||
// expect: Fiber
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
var Module = "outer"
|
||||
|
||||
if (true) {
|
||||
import "module" for Module
|
||||
import "./module" for Module
|
||||
// expect: ran module
|
||||
|
||||
System.print(Module) // expect: from module
|
||||
|
||||
@ -1 +1 @@
|
||||
import "module" NoString // expect error
|
||||
import "./module" NoString // expect error
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
import "something" for Index
|
||||
import "./something/module" for Index
|
||||
|
||||
System.print(Index) // expect: index
|
||||
@ -1,4 +1,4 @@
|
||||
import "module" for Module1, Module2, Module3, Module4, Module5
|
||||
import "./module" for Module1, Module2, Module3, Module4, Module5
|
||||
|
||||
// Only execute module body once:
|
||||
// expect: ran module
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
var Collides
|
||||
import "module" for Collides // expect error
|
||||
import "./module" for Collides // expect error
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import
|
||||
|
||||
|
||||
"module"
|
||||
"./module"
|
||||
|
||||
import "module" for
|
||||
import "./module" for
|
||||
|
||||
A,
|
||||
|
||||
|
||||
@ -1,2 +1,2 @@
|
||||
import "module"
|
||||
import "./module"
|
||||
// expect: ran module
|
||||
|
||||
2
test/language/module/relative_import/module_3.wren
Normal file
2
test/language/module/relative_import/module_3.wren
Normal file
@ -0,0 +1,2 @@
|
||||
// nontest
|
||||
System.print("module_3")
|
||||
@ -0,0 +1,8 @@
|
||||
import "./sub/module"
|
||||
import "./sub/././///dir/module"
|
||||
// expect: sub/module
|
||||
// expect: sub/module_2
|
||||
// expect: sub/dir/module
|
||||
// expect: sub/dir/module_2
|
||||
// expect: sub/module_3
|
||||
// expect: module_3
|
||||
3
test/language/module/relative_import/sub/dir/module.wren
Normal file
3
test/language/module/relative_import/sub/dir/module.wren
Normal file
@ -0,0 +1,3 @@
|
||||
// nontest
|
||||
System.print("sub/dir/module")
|
||||
import "./module_2"
|
||||
@ -0,0 +1,4 @@
|
||||
// nontest
|
||||
System.print("sub/dir/module_2")
|
||||
import "../module_3"
|
||||
import "../../module_3"
|
||||
3
test/language/module/relative_import/sub/module.wren
Normal file
3
test/language/module/relative_import/sub/module.wren
Normal file
@ -0,0 +1,3 @@
|
||||
// nontest
|
||||
System.print("sub/module")
|
||||
import "./module_2"
|
||||
2
test/language/module/relative_import/sub/module_2.wren
Normal file
2
test/language/module/relative_import/sub/module_2.wren
Normal file
@ -0,0 +1,2 @@
|
||||
// nontest
|
||||
System.print("sub/module_2")
|
||||
2
test/language/module/relative_import/sub/module_3.wren
Normal file
2
test/language/module/relative_import/sub/module_3.wren
Normal file
@ -0,0 +1,2 @@
|
||||
// nontest
|
||||
System.print("sub/module_3")
|
||||
@ -1,5 +1,5 @@
|
||||
// nontest
|
||||
System.print("a")
|
||||
import "shared" for Shared
|
||||
import "./shared" for Shared
|
||||
var A = "a %(Shared)"
|
||||
System.print("a done")
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
// nontest
|
||||
System.print("b")
|
||||
import "shared" for Shared
|
||||
import "./shared" for Shared
|
||||
var B = "b %(Shared)"
|
||||
System.print("b done")
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import "a" for A
|
||||
import "b" for B
|
||||
import "./a" for A
|
||||
import "./b" for B
|
||||
|
||||
// Shared module should only run once:
|
||||
// expect: a
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import "module" for Module
|
||||
import "./module" for Module
|
||||
// expect: ran module
|
||||
|
||||
System.print(Module) // expect: from module
|
||||
|
||||
@ -1 +1 @@
|
||||
import "does_not_exist" for DoesNotExist // expect runtime error: Could not load module 'does_not_exist'.
|
||||
import "./does_not_exist" for DoesNotExist // expect runtime error: Could not load module 'test/language/module/does_not_exist'.
|
||||
|
||||
@ -1,3 +1,3 @@
|
||||
// Should execute the module:
|
||||
// expect: ran module
|
||||
import "module" for DoesNotExist // expect runtime error: Could not find a variable named 'DoesNotExist' in module 'module'.
|
||||
import "./module" for DoesNotExist // expect runtime error: Could not find a variable named 'DoesNotExist' in module 'test/language/module/unknown_variable/module'.
|
||||
|
||||
Reference in New Issue
Block a user