improve error messages
This commit is contained in:
+29
-1
@@ -10432,7 +10432,7 @@ package_and_file_local_visibility_is_enforced :: proc(t: ^testing.T) {
|
||||
found_collision = found_collision || strings.contains(diagnostic.message, "duplicate function 'collision'")
|
||||
found_file_sibling = found_file_sibling || strings.contains(diagnostic.message, "unknown symbol 'file_sibling'")
|
||||
found_file_sibling_value = found_file_sibling_value || strings.contains(diagnostic.message, "unknown symbol 'file_sibling_value'")
|
||||
found_file_sibling_type = found_file_sibling_type || strings.contains(diagnostic.message, "unknown or opaque record type 'File_Sibling'")
|
||||
found_file_sibling_type = found_file_sibling_type || strings.contains(diagnostic.message, "unknown symbol 'File_Sibling'")
|
||||
}
|
||||
testing.expect(t, !found_sibling)
|
||||
testing.expect(t, !found_sibling_value)
|
||||
@@ -15042,6 +15042,34 @@ missing_qualified_signature_symbol_reports_one_root_error :: proc(t: ^testing.T)
|
||||
testing.expect(t, !strings.contains(formatted, "could not resolve the 'int' constraint"))
|
||||
}
|
||||
|
||||
@(test)
|
||||
missing_unqualified_signature_type_reports_one_root_error :: proc(t: ^testing.T) {
|
||||
text := `render_stmt func(node NodeId) void {}
|
||||
main func() void {
|
||||
render_stmt(0)
|
||||
}
|
||||
`
|
||||
source_file := source.Source{path="renderer.bro", text=text}
|
||||
diagnostics := source.init_diagnostics(&source_file)
|
||||
defer source.destroy_diagnostics(&diagnostics)
|
||||
symbols := symbol.init_table()
|
||||
defer symbol.destroy_table(&symbols)
|
||||
stream := lexer.lex(&source_file, &diagnostics, &symbols)
|
||||
defer delete(stream.items)
|
||||
ast_module := parser.parse(&stream, &source_file, &diagnostics)
|
||||
defer ast.destroy_module(&ast_module)
|
||||
hir_module := checker.check(&ast_module, &diagnostics, &symbols)
|
||||
defer hir.destroy_module(&hir_module)
|
||||
|
||||
testing.expect_value(t, len(diagnostics.items), 1)
|
||||
testing.expect_value(t, diagnostics.items[0].message, "unknown symbol 'NodeId'")
|
||||
formatted := source.format(&diagnostics, source.Diagnostic_Id(0))
|
||||
defer delete(formatted)
|
||||
testing.expect(t, strings.contains(formatted, "renderer.bro:1:23"))
|
||||
testing.expect(t, strings.contains(formatted, "^^^^^^ unknown symbol"))
|
||||
testing.expect(t, !strings.contains(formatted, "could not resolve specialization"))
|
||||
}
|
||||
|
||||
@(test)
|
||||
poisoned_global_and_local_types_do_not_create_inference_fallbacks :: proc(t: ^testing.T) {
|
||||
directory := "/tmp/brolang-test-poisoned-declarations"
|
||||
|
||||
Reference in New Issue
Block a user