diff --git a/lib/Basic/ParseableOutput.cpp b/lib/Basic/ParseableOutput.cpp index 21bf4e256735b..87d6bc6500acb 100644 --- a/lib/Basic/ParseableOutput.cpp +++ b/lib/Basic/ParseableOutput.cpp @@ -42,6 +42,7 @@ template <> struct ScalarEnumerationTraits { std::string typeName = file_types::getTypeName(ty).str(); out.enumCase(value, typeName.c_str(), ty); }); + out.enumCase(value, "unknown", file_types::ID::TY_INVALID); } }; diff --git a/lib/FrontendTool/FrontendTool.cpp b/lib/FrontendTool/FrontendTool.cpp index ae23d1c0c61e2..6fd322e9fb6b2 100644 --- a/lib/FrontendTool/FrontendTool.cpp +++ b/lib/FrontendTool/FrontendTool.cpp @@ -601,6 +601,7 @@ static swift::file_types::ID computeFileTypeForPath(const StringRef Path) { // then iterate over all preceeding possible extension variants. while (llvm::sys::path::has_extension(PathStem)) { auto NextExtension = llvm::sys::path::extension(PathStem); + PathStem = llvm::sys::path::stem(PathStem); Extension = NextExtension.str() + Extension; FileType = file_types::lookupTypeForExtension(Extension); if (FileType != swift::file_types::ID::TY_INVALID) diff --git a/test/Frontend/parseable_output_unknown_file_type.swift b/test/Frontend/parseable_output_unknown_file_type.swift new file mode 100644 index 0000000000000..3cc4b37a0cb7d --- /dev/null +++ b/test/Frontend/parseable_output_unknown_file_type.swift @@ -0,0 +1,38 @@ +// RUN: %target-swift-frontend -primary-file %s %S/Inputs/filelist-other.swift -o %t.out -module-name parseable_output -empty-abi-descriptor -emit-abi-descriptor-path %t.abi.weird_file_extension -emit-module -emit-module-path %t.swiftmodule -frontend-parseable-output 2>&1 | %FileCheck %s + +// CHECK: {{[1-9][0-9]*}} +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "began", +// CHECK-NEXT: "name": "compile", +// CHECK: "inputs": [ +// CHECK-NEXT: "{{.*[\\/]}}parseable_output_unknown_file_type.swift" +// CHECK: "outputs": [ +// CHECK-NEXT: { +// CHECK-NEXT: "type": "image", +// CHECK-NEXT: "path": "{{.*[\\/]}}parseable_output_unknown_file_type.swift.tmp.out" +// CHECK-NEXT: }, +// CHECK-NEXT: { +// CHECK-NEXT: "type": "swiftmodule", +// CHECK-NEXT: "path": "{{.*[\\/]}}parseable_output_unknown_file_type.swift.tmp.swiftmodule" +// CHECK-NEXT: }, +// CHECK-NEXT: { +// CHECK-NEXT: "type": "unknown", +// CHECK-NEXT: "path": "{{.*[\\/]}}parseable_output_unknown_file_type.swift.tmp.abi.weird_file_extension" +// CHECK-NEXT: } +// CHECK-NEXT: ], +// CHECK-NEXT: "pid": [[PID:[0-9]*]] +// CHECK-NEXT: "process": { +// CHECK-NEXT: "real_pid": [[PID]] +// CHECK-NEXT: } +// CHECK-NEXT: } + +// CHECK-NEXT: {{[1-9][0-9]*}} +// CHECK-NEXT: { +// CHECK-NEXT: "kind": "finished", +// CHECK-NEXT: "name": "compile", +// CHECK-NEXT: "pid": [[PID]], +// CHECK-NEXT: "process": { +// CHECK-NEXT: "real_pid": [[PID]] +// CHECK-NEXT: }, +// CHECK-NEXT: "exit-status": 0 +// CHECK-NEXT: }