Skip to content

Commit 72faa8c

Browse files
ngallodevclaude
andauthored
fix(discover): map .NET XML files (#6)
## Summary - Recognize .NET project, resource, XAML, and manifest extensions as XML during discovery. - Adapt upstream XML discovery commit `e0becdeb`. ## Provenance and gates - Agent Run: `luna-cbm-xml-20260920`; source revision `a43b2201`; worker commit `d6177b61`. - Agent-Workflow reports a valid completion receipt. Independent review, evaluation, acceptance, and integration are pending. - `git diff --check main...HEAD` passed. No tests were run for this PR request. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent fcc51bc commit 72faa8c

2 files changed

Lines changed: 50 additions & 0 deletions

File tree

‎src/discover/language.c‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,25 @@ static const ext_entry_t EXT_TABLE[] = {
312312
{".xsd", CBM_LANG_XML},
313313
{".xsl", CBM_LANG_XML},
314314
{".svg", CBM_LANG_XML},
315+
/* MSBuild project system. */
316+
{".csproj", CBM_LANG_XML},
317+
{".vbproj", CBM_LANG_XML},
318+
{".fsproj", CBM_LANG_XML},
319+
{".props", CBM_LANG_XML},
320+
{".targets", CBM_LANG_XML},
321+
{".nuspec", CBM_LANG_XML},
322+
{".slnx", CBM_LANG_XML},
323+
{".runsettings", CBM_LANG_XML},
324+
/* .NET resource files. */
325+
{".resx", CBM_LANG_XML},
326+
/* XAML views. */
327+
{".xaml", CBM_LANG_XML},
328+
{".axaml", CBM_LANG_XML},
329+
/* Application manifests. */
330+
{".plist", CBM_LANG_XML},
331+
{".xcprivacy", CBM_LANG_XML},
332+
{".manifest", CBM_LANG_XML},
333+
{".appxmanifest", CBM_LANG_XML},
315334

316335
/* YAML */
317336
{".yaml", CBM_LANG_YAML},

‎tests/test_language.c‎

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,33 @@ TEST(lang_ext_svg) {
404404
ASSERT_EQ(cbm_language_for_extension(".svg"), CBM_LANG_XML);
405405
PASS();
406406
}
407+
TEST(lang_ext_msbuild_projects) {
408+
ASSERT_EQ(cbm_language_for_extension(".csproj"), CBM_LANG_XML);
409+
ASSERT_EQ(cbm_language_for_extension(".vbproj"), CBM_LANG_XML);
410+
ASSERT_EQ(cbm_language_for_extension(".fsproj"), CBM_LANG_XML);
411+
ASSERT_EQ(cbm_language_for_extension(".props"), CBM_LANG_XML);
412+
ASSERT_EQ(cbm_language_for_extension(".targets"), CBM_LANG_XML);
413+
ASSERT_EQ(cbm_language_for_extension(".nuspec"), CBM_LANG_XML);
414+
ASSERT_EQ(cbm_language_for_extension(".slnx"), CBM_LANG_XML);
415+
ASSERT_EQ(cbm_language_for_extension(".runsettings"), CBM_LANG_XML);
416+
PASS();
417+
}
418+
TEST(lang_ext_resx) {
419+
ASSERT_EQ(cbm_language_for_extension(".resx"), CBM_LANG_XML);
420+
PASS();
421+
}
422+
TEST(lang_ext_xaml) {
423+
ASSERT_EQ(cbm_language_for_extension(".xaml"), CBM_LANG_XML);
424+
ASSERT_EQ(cbm_language_for_extension(".axaml"), CBM_LANG_XML);
425+
PASS();
426+
}
427+
TEST(lang_ext_app_manifests) {
428+
ASSERT_EQ(cbm_language_for_extension(".plist"), CBM_LANG_XML);
429+
ASSERT_EQ(cbm_language_for_extension(".xcprivacy"), CBM_LANG_XML);
430+
ASSERT_EQ(cbm_language_for_extension(".manifest"), CBM_LANG_XML);
431+
ASSERT_EQ(cbm_language_for_extension(".appxmanifest"), CBM_LANG_XML);
432+
PASS();
433+
}
407434
TEST(lang_ext_markdown) {
408435
ASSERT_EQ(cbm_language_for_extension(".md"), CBM_LANG_MARKDOWN);
409436
PASS();
@@ -1351,6 +1378,10 @@ SUITE(language) {
13511378
RUN_TEST(lang_ext_xsl);
13521379
RUN_TEST(lang_ext_xsd);
13531380
RUN_TEST(lang_ext_svg);
1381+
RUN_TEST(lang_ext_msbuild_projects);
1382+
RUN_TEST(lang_ext_resx);
1383+
RUN_TEST(lang_ext_xaml);
1384+
RUN_TEST(lang_ext_app_manifests);
13541385
RUN_TEST(lang_ext_markdown);
13551386
RUN_TEST(lang_ext_mdx);
13561387
RUN_TEST(lang_ext_makefile);

0 commit comments

Comments
 (0)