_ prefixed top-level symbols now file-local
This commit is contained in:
@@ -6645,6 +6645,49 @@ imports_are_file_local :: proc(t: ^testing.T) {
|
||||
testing.expect(t, !state.success)
|
||||
}
|
||||
|
||||
@(test)
|
||||
leading_underscore_declarations_are_file_hidden :: proc(t: ^testing.T) {
|
||||
output := "/tmp/brolang-test-hidden-declarations"
|
||||
defer _ = os.remove(output)
|
||||
status := compiler_core.compile_package("examples/packages/hidden_valid/app", output)
|
||||
testing.expect_value(t, status, 0)
|
||||
state := run_executable(output)
|
||||
testing.expect_value(t, state.exit_code, 7)
|
||||
}
|
||||
|
||||
@(test)
|
||||
file_hidden_declarations_are_not_package_members :: proc(t: ^testing.T) {
|
||||
sources := source.init_store()
|
||||
defer source.destroy_store(&sources)
|
||||
diagnostics := source.init_store_diagnostics(&sources)
|
||||
defer source.destroy_diagnostics(&diagnostics)
|
||||
symbols := symbol.init_table()
|
||||
defer symbol.destroy_table(&symbols)
|
||||
module, loaded := loader.load("examples/packages/hidden_invalid/app", &sources, &diagnostics, &symbols)
|
||||
defer ast.destroy_module(&module)
|
||||
hir_module := checker.check(&module, &diagnostics, &symbols)
|
||||
defer hir.destroy_module(&hir_module)
|
||||
|
||||
testing.expect(t, loaded)
|
||||
found_sibling := false
|
||||
found_sibling_value := false
|
||||
found_sibling_type := false
|
||||
found_import := false
|
||||
found_collision := false
|
||||
for diagnostic in diagnostics.items {
|
||||
found_sibling = found_sibling || strings.contains(diagnostic.message, "unresolved function '_sibling'")
|
||||
found_sibling_value = found_sibling_value || strings.contains(diagnostic.message, "unresolved global '_sibling_value'")
|
||||
found_sibling_type = found_sibling_type || strings.contains(diagnostic.message, "unknown or opaque record type '_Sibling'")
|
||||
found_import = found_import || strings.contains(diagnostic.message, "package 'dep' has no member '_secret'")
|
||||
found_collision = found_collision || strings.contains(diagnostic.message, "duplicate function '_collision'")
|
||||
}
|
||||
testing.expect(t, found_sibling)
|
||||
testing.expect(t, found_sibling_value)
|
||||
testing.expect(t, found_sibling_type)
|
||||
testing.expect(t, found_import)
|
||||
testing.expect(t, found_collision)
|
||||
}
|
||||
|
||||
@(test)
|
||||
package_import_cycles_are_valid :: proc(t: ^testing.T) {
|
||||
output := "/tmp/brolang-test-package-cycle"
|
||||
|
||||
Reference in New Issue
Block a user