From db8e0beeaca0f0330431d5874bfb22e0a3f1fb70 Mon Sep 17 00:00:00 2001 From: Brad King Date: Tue, 11 May 2021 08:47:58 -0400 Subject: cmGlobalNinjaGenerator: Clarify semantics of Fortran scanning info Use `optional<>` instead of `unique_ptr<>` to hold optional value. --- Source/cmGlobalNinjaGenerator.cxx | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 0a5b169..d667575 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -2255,7 +2256,7 @@ struct cmSourceInfo std::vector Includes; }; -std::unique_ptr cmcmd_cmake_ninja_depends_fortran( +cm::optional cmcmd_cmake_ninja_depends_fortran( std::string const& arg_tdi, std::string const& arg_pp); } @@ -2312,7 +2313,7 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, return 1; } - std::unique_ptr info; + cm::optional info; if (arg_lang == "Fortran") { info = cmcmd_cmake_ninja_depends_fortran(arg_tdi, arg_pp); } else { @@ -2348,9 +2349,10 @@ int cmcmd_cmake_ninja_depends(std::vector::const_iterator argBeg, namespace { -std::unique_ptr cmcmd_cmake_ninja_depends_fortran( +cm::optional cmcmd_cmake_ninja_depends_fortran( std::string const& arg_tdi, std::string const& arg_pp) { + cm::optional info; cmFortranCompiler fc; std::vector includes; { @@ -2363,7 +2365,7 @@ std::unique_ptr cmcmd_cmake_ninja_depends_fortran( cmSystemTools::Error( cmStrCat("-E cmake_ninja_depends failed to parse ", arg_tdi, reader.getFormattedErrorMessages())); - return nullptr; + return info; } } @@ -2390,14 +2392,14 @@ std::unique_ptr cmcmd_cmake_ninja_depends_fortran( if (!cmFortranParser_FilePush(&parser, arg_pp.c_str())) { cmSystemTools::Error( cmStrCat("-E cmake_ninja_depends failed to open ", arg_pp)); - return nullptr; + return info; } if (cmFortran_yyparse(parser.Scanner) != 0) { // Failed to parse the file. - return nullptr; + return info; } - auto info = cm::make_unique(); + info = cmSourceInfo(); for (std::string const& provide : finfo.Provides) { cmSourceReqInfo src_info; src_info.LogicalName = provide; -- cgit v0.12