fix(domain-and-input-skeleton): locate extra instance diagnostic

This commit is contained in:
KOKO\Mimi
2026-07-30 18:24:27 +09:00
parent 154f8ef4af
commit aa1ff76b80
2 changed files with 12 additions and 2 deletions
+5 -1
View File
@@ -181,10 +181,14 @@ private:
active_assembly_ = &*deck_.assembly; active_assembly_ = &*deck_.assembly;
if (active_assembly_->instances.size() != 1U) { if (active_assembly_->instances.size() != 1U) {
const SourceLocation& source =
active_assembly_->instances.size() > 1U
? active_assembly_->instances[1].source
: active_assembly_->source;
add_error( add_error(
"abaqus.semantic.instance_count", "abaqus.semantic.instance_count",
"Phase 1 requires exactly one Instance.", "Phase 1 requires exactly one Instance.",
active_assembly_->source); source);
return false; return false;
} }
@@ -256,7 +256,13 @@ TEST(ActiveInstance, RejectsMultipleInstances) {
const auto result = parse_and_map(input.path()); const auto result = parse_and_map(input.path());
EXPECT_FALSE(result.domain.has_value()); EXPECT_FALSE(result.domain.has_value());
EXPECT_TRUE(has_diagnostic(result, "abaqus.semantic.instance_count")); const auto diagnostic = std::ranges::find(
result.diagnostics,
std::string_view{"abaqus.semantic.instance_count"},
&fesa::Diagnostic::code);
ASSERT_NE(diagnostic, result.diagnostics.end());
ASSERT_TRUE(diagnostic->source.has_value());
EXPECT_EQ(diagnostic->source->line, 6U);
} }
} // namespace } // namespace