diff --git a/lib/SILOptimizer/PassManager/PassManager.cpp b/lib/SILOptimizer/PassManager/PassManager.cpp index a1b5200e81ebb..ef2e70b71957f 100644 --- a/lib/SILOptimizer/PassManager/PassManager.cpp +++ b/lib/SILOptimizer/PassManager/PassManager.cpp @@ -58,8 +58,8 @@ llvm::cl::opt SILBreakOnPass( "sil-break-on-pass", llvm::cl::init(""), llvm::cl::desc("Break before running a particular function pass")); -llvm::cl::opt - SILPrintOnlyFun("sil-print-only-function", llvm::cl::init(""), +llvm::cl::list + SILPrintOnlyFun("sil-print-only-function", llvm::cl::CommaSeparated, llvm::cl::desc("Only print out the sil for this function")); llvm::cl::opt @@ -144,7 +144,8 @@ static llvm::cl::optgetName() != SILPrintOnlyFun) + if (!SILPrintOnlyFun.empty() && F && SILPrintOnlyFun.end() == + std::find(SILPrintOnlyFun.begin(), SILPrintOnlyFun.end(), F->getName())) return false; if (!SILPrintOnlyFuns.empty() && F && @@ -168,7 +169,8 @@ static bool doPrintBefore(SILTransform *T, SILFunction *F) { } static bool doPrintAfter(SILTransform *T, SILFunction *F, bool Default) { - if (!SILPrintOnlyFun.empty() && F && F->getName() != SILPrintOnlyFun) + if (!SILPrintOnlyFun.empty() && F && SILPrintOnlyFun.end() == + std::find(SILPrintOnlyFun.begin(), SILPrintOnlyFun.end(), F->getName())) return false; if (!SILPrintOnlyFuns.empty() && F && @@ -207,7 +209,8 @@ static void printModule(SILModule *Mod, bool EmitVerboseSIL) { return; } for (auto &F : *Mod) { - if (!SILPrintOnlyFun.empty() && F.getName().str() == SILPrintOnlyFun) + if (!SILPrintOnlyFun.empty() && SILPrintOnlyFun.end() != + std::find(SILPrintOnlyFun.begin(), SILPrintOnlyFun.end(), F.getName())) F.dump(EmitVerboseSIL); if (!SILPrintOnlyFuns.empty() && diff --git a/validation-test/IDE/crashers_2/complete_repl_decl_conformance.swift b/validation-test/IDE/crashers_2/complete_repl_decl_conformance.swift new file mode 100644 index 0000000000000..646b07cc094e3 --- /dev/null +++ b/validation-test/IDE/crashers_2/complete_repl_decl_conformance.swift @@ -0,0 +1,5 @@ +// TODO(SR-12076): Make this not crash. +// RUN: not --crash %target-swift-ide-test -repl-code-completion -source-filename %s +// REQUIRES: asserts + +struct Bar: