diff --git a/src/Samples/Kaleidoscope/Chapter2/ReplEngine.cs b/src/Samples/Kaleidoscope/Chapter2/ReplEngine.cs index 9412c6704..5f9306c94 100644 --- a/src/Samples/Kaleidoscope/Chapter2/ReplEngine.cs +++ b/src/Samples/Kaleidoscope/Chapter2/ReplEngine.cs @@ -11,7 +11,7 @@ namespace Kaleidoscope.Chapter2 { internal class ReplEngine - : KaleidoscopeReadEvaluatePrintLoopBase + : ReadEvaluatePrintLoopBase { public ReplEngine( ) : base( LanguageLevel.MutableVariables ) diff --git a/src/Samples/Kaleidoscope/Chapter3.5/ReplEngine.cs b/src/Samples/Kaleidoscope/Chapter3.5/ReplEngine.cs index 9d5f346ed..2dfb88b3b 100644 --- a/src/Samples/Kaleidoscope/Chapter3.5/ReplEngine.cs +++ b/src/Samples/Kaleidoscope/Chapter3.5/ReplEngine.cs @@ -12,7 +12,7 @@ namespace Kaleidoscope.Chapter3_5 { internal class ReplEngine - : KaleidoscopeReadEvaluatePrintLoopBase + : ReadEvaluatePrintLoopBase { public ReplEngine( ) : base( LanguageLevel.SimpleExpressions ) diff --git a/src/Samples/Kaleidoscope/Chapter3/ReplEngine.cs b/src/Samples/Kaleidoscope/Chapter3/ReplEngine.cs index 2493b83a8..b3c0cdd8c 100644 --- a/src/Samples/Kaleidoscope/Chapter3/ReplEngine.cs +++ b/src/Samples/Kaleidoscope/Chapter3/ReplEngine.cs @@ -12,7 +12,7 @@ namespace Kaleidoscope.Chapter3 { internal class ReplEngine - : KaleidoscopeReadEvaluatePrintLoopBase + : ReadEvaluatePrintLoopBase { public ReplEngine( ) : base( LanguageLevel.SimpleExpressions ) diff --git a/src/Samples/Kaleidoscope/Chapter4/ReplEngine.cs b/src/Samples/Kaleidoscope/Chapter4/ReplEngine.cs index 5cf5148a3..0619f2cc1 100644 --- a/src/Samples/Kaleidoscope/Chapter4/ReplEngine.cs +++ b/src/Samples/Kaleidoscope/Chapter4/ReplEngine.cs @@ -12,7 +12,7 @@ namespace Kaleidoscope.Chapter4 { internal class ReplEngine - : KaleidoscopeReadEvaluatePrintLoopBase + : ReadEvaluatePrintLoopBase { public ReplEngine( ) : base( LanguageLevel.SimpleExpressions ) @@ -41,8 +41,15 @@ public override void ProcessResults( Value resultValue ) case Function function: #if SAVE_LLVM_IR - string safeFileName = Utilities.GetSafeFileName( function.Name ); - _ = function.ParentModule.WriteToTextFile( System.IO.Path.ChangeExtension( safeFileName, "ll" ), out string _ ); + if(function.Name is not null) + { + string safeFileName = Utilities.GetSafeFileName( function.Name ); + string finalPath = System.IO.Path.ChangeExtension( safeFileName, "ll" ); + if(!function.ParentModule.WriteToTextFile( finalPath, out string errMessage )) + { + Console.Error.WriteLine($"ERROR saving output file '{finalPath}': {errMessage}"); + } + } #endif break; diff --git a/src/Samples/Kaleidoscope/Chapter5/ReplEngine.cs b/src/Samples/Kaleidoscope/Chapter5/ReplEngine.cs index cfd2c3c13..6e25ec7b3 100644 --- a/src/Samples/Kaleidoscope/Chapter5/ReplEngine.cs +++ b/src/Samples/Kaleidoscope/Chapter5/ReplEngine.cs @@ -12,7 +12,7 @@ namespace Kaleidoscope.Chapter5 { internal class ReplEngine - : KaleidoscopeReadEvaluatePrintLoopBase + : ReadEvaluatePrintLoopBase { public ReplEngine( ) : base( LanguageLevel.ControlFlow ) @@ -41,8 +41,15 @@ public override void ProcessResults( Value resultValue ) case Function function: #if SAVE_LLVM_IR - string safeFileName = Utilities.GetSafeFileName( function.Name ); - _ = function.ParentModule.WriteToTextFile( System.IO.Path.ChangeExtension( safeFileName, "ll" ), out string _ ); + if(function.Name is not null) + { + string safeFileName = Utilities.GetSafeFileName( function.Name ); + string finalPath = System.IO.Path.ChangeExtension( safeFileName, "ll" ); + if(!function.ParentModule.WriteToTextFile( finalPath, out string errMessage )) + { + Console.Error.WriteLine($"ERROR saving output file '{finalPath}': {errMessage}"); + } + } #endif break; diff --git a/src/Samples/Kaleidoscope/Chapter6/ReplEngine.cs b/src/Samples/Kaleidoscope/Chapter6/ReplEngine.cs index 59de739ba..bb21bea6f 100644 --- a/src/Samples/Kaleidoscope/Chapter6/ReplEngine.cs +++ b/src/Samples/Kaleidoscope/Chapter6/ReplEngine.cs @@ -12,7 +12,7 @@ namespace Kaleidoscope.Chapter6 { internal class ReplEngine - : KaleidoscopeReadEvaluatePrintLoopBase + : ReadEvaluatePrintLoopBase { public ReplEngine( ) : base( LanguageLevel.UserDefinedOperators ) @@ -41,8 +41,15 @@ public override void ProcessResults( Value resultValue ) case Function function: #if SAVE_LLVM_IR - string safeFileName = Utilities.GetSafeFileName( function.Name ); - _ = function.ParentModule.WriteToTextFile( System.IO.Path.ChangeExtension( safeFileName, "ll" ), out string _ ); + if(function.Name is not null) + { + string safeFileName = Utilities.GetSafeFileName( function.Name ); + string finalPath = System.IO.Path.ChangeExtension( safeFileName, "ll" ); + if(!function.ParentModule.WriteToTextFile( finalPath, out string errMessage )) + { + Console.Error.WriteLine($"ERROR saving output file '{finalPath}': {errMessage}"); + } + } #endif break; diff --git a/src/Samples/Kaleidoscope/Chapter7.1/ReplEngine.cs b/src/Samples/Kaleidoscope/Chapter7.1/ReplEngine.cs index 0cb650f5b..c6d54cb1e 100644 --- a/src/Samples/Kaleidoscope/Chapter7.1/ReplEngine.cs +++ b/src/Samples/Kaleidoscope/Chapter7.1/ReplEngine.cs @@ -12,7 +12,7 @@ namespace Kaleidoscope.Chapter71 { internal class ReplEngine - : KaleidoscopeReadEvaluatePrintLoopBase + : ReadEvaluatePrintLoopBase { public ReplEngine( ) : base( LanguageLevel.MutableVariables ) @@ -41,8 +41,15 @@ public override void ProcessResults( Value resultValue ) case Function function: #if SAVE_LLVM_IR - string safeFileName = Utilities.GetSafeFileName( function.Name ); - _ = function.ParentModule.WriteToTextFile( System.IO.Path.ChangeExtension( safeFileName, "ll" ), out string _ ); + if(function.Name is not null) + { + string safeFileName = Utilities.GetSafeFileName( function.Name ); + string finalPath = System.IO.Path.ChangeExtension( safeFileName, "ll" ); + if(!function.ParentModule.WriteToTextFile( finalPath, out string errMessage )) + { + Console.Error.WriteLine($"ERROR saving output file '{finalPath}': {errMessage}"); + } + } #endif break; diff --git a/src/Samples/Kaleidoscope/Chapter7/ReplEngine.cs b/src/Samples/Kaleidoscope/Chapter7/ReplEngine.cs index 13be1485e..728a05c90 100644 --- a/src/Samples/Kaleidoscope/Chapter7/ReplEngine.cs +++ b/src/Samples/Kaleidoscope/Chapter7/ReplEngine.cs @@ -12,7 +12,7 @@ namespace Kaleidoscope.Chapter7 { internal class ReplEngine - : KaleidoscopeReadEvaluatePrintLoopBase + : ReadEvaluatePrintLoopBase { public ReplEngine( ) : base( LanguageLevel.MutableVariables ) @@ -41,8 +41,15 @@ public override void ProcessResults( Value resultValue ) case Function function: #if SAVE_LLVM_IR - string safeFileName = Utilities.GetSafeFileName( function.Name ); - _ = function.ParentModule.WriteToTextFile( System.IO.Path.ChangeExtension( safeFileName, "ll" ), out string _ ); + if(function.Name is not null) + { + string safeFileName = Utilities.GetSafeFileName( function.Name ); + string finalPath = System.IO.Path.ChangeExtension( safeFileName, "ll" ); + if(!function.ParentModule.WriteToTextFile( finalPath, out string errMessage )) + { + Console.Error.WriteLine($"ERROR saving output file '{finalPath}': {errMessage}"); + } + } #endif break; diff --git a/src/Samples/Kaleidoscope/Kaleidoscope.Runtime/KaleidoscopeReadEvaluatePrintLoopBase.cs b/src/Samples/Kaleidoscope/Kaleidoscope.Runtime/ReadEvaluatePrintLoopBase.cs similarity index 90% rename from src/Samples/Kaleidoscope/Kaleidoscope.Runtime/KaleidoscopeReadEvaluatePrintLoopBase.cs rename to src/Samples/Kaleidoscope/Kaleidoscope.Runtime/ReadEvaluatePrintLoopBase.cs index e6988beb6..ee21e7e63 100644 --- a/src/Samples/Kaleidoscope/Kaleidoscope.Runtime/KaleidoscopeReadEvaluatePrintLoopBase.cs +++ b/src/Samples/Kaleidoscope/Kaleidoscope.Runtime/ReadEvaluatePrintLoopBase.cs @@ -15,8 +15,8 @@ namespace Kaleidoscope.Runtime { /// REPL Loop implementation for the Kaleidoscope language /// Type of values produced by the evaluation stage - public abstract class KaleidoscopeReadEvaluatePrintLoopBase - : REPLBase + public abstract class ReadEvaluatePrintLoopBase + : Ubiquity.NET.Runtime.Utils.REPLBase { /// Gets the Kaleidoscope language level for this instance public LanguageLevel LanguageFeatureLevel { get; } @@ -64,23 +64,23 @@ public sealed override void ShowPrompt( ReadyState state ) await Run( input, parser, generator, cancelToken ); } - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// Language level supported by this REPL instance /// /// This is protected to prevent use by anything other than a derived type. /// - protected KaleidoscopeReadEvaluatePrintLoopBase( LanguageLevel level ) + protected ReadEvaluatePrintLoopBase( LanguageLevel level ) : this(level, new ParseErrorDiagnosticAdapter(new ColoredConsoleReporter(), "KLS")) { } - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// Language level supported by this REPL instance /// Logger to report any issues parsing the input. /// /// This is protected to prevent use by anything other than a derived type. /// - protected KaleidoscopeReadEvaluatePrintLoopBase( LanguageLevel level, IParseErrorReporter logger ) + protected ReadEvaluatePrintLoopBase( LanguageLevel level, IParseErrorReporter logger ) : base( logger ) { LanguageFeatureLevel = level;