From aa1ff76b805b1b997deb089b82e4a412a5005a22 Mon Sep 17 00:00:00 2001 From: "KOKO\\Mimi" Date: Thu, 30 Jul 2026 18:24:27 +0900 Subject: [PATCH] fix(domain-and-input-skeleton): locate extra instance diagnostic --- src/fesa/io/abaqus/semantic_mapper.cpp | 6 +++++- tests/integration/io/minimal_deck_to_domain_test.cpp | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/fesa/io/abaqus/semantic_mapper.cpp b/src/fesa/io/abaqus/semantic_mapper.cpp index b4ebb9b..fefcda7 100644 --- a/src/fesa/io/abaqus/semantic_mapper.cpp +++ b/src/fesa/io/abaqus/semantic_mapper.cpp @@ -181,10 +181,14 @@ private: active_assembly_ = &*deck_.assembly; if (active_assembly_->instances.size() != 1U) { + const SourceLocation& source = + active_assembly_->instances.size() > 1U + ? active_assembly_->instances[1].source + : active_assembly_->source; add_error( "abaqus.semantic.instance_count", "Phase 1 requires exactly one Instance.", - active_assembly_->source); + source); return false; } diff --git a/tests/integration/io/minimal_deck_to_domain_test.cpp b/tests/integration/io/minimal_deck_to_domain_test.cpp index 82ef9b2..1f04648 100644 --- a/tests/integration/io/minimal_deck_to_domain_test.cpp +++ b/tests/integration/io/minimal_deck_to_domain_test.cpp @@ -256,7 +256,13 @@ TEST(ActiveInstance, RejectsMultipleInstances) { const auto result = parse_and_map(input.path()); 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