public static IDiagnosticsSink InsertSink( this IDiagnosticsSink sink) { var subSink = new DiagnosticSink(); sink.Add(subSink); return(subSink); }
public static IDiagnosticsSink InsertSink( this IDiagnosticsSink sink) { var subSink = new DiagnosticSink(); sink.Add(subSink); return subSink; }
public static Options Parse(string[] args) { var diagnostics = new DiagnosticSink(); var range = new SourceRange("<command line>"); Options result = new Options(); int argCount = args.Length; int argIdx = 0; while (argIdx < argCount) { var argStr = args[argIdx++]; if (argStr.StartsWith("-")) { if (argStr.StartsWith("-o")) { var option = argStr.Substring(2); if( string.IsNullOrWhiteSpace(option) ) { option = args[argIdx++]; } result.outputPrefix = option; } else { diagnostics.Add( Severity.Error, range, "Unknown option '{0}'", argStr); } } else { result.fileNames.Add(argStr); } } int fileCount = result.fileNames.Count; if (fileCount == 1) { if (result.outputPrefix == null) { result.outputPrefix = result.fileNames[0]; } } else if (fileCount == 0) { diagnostics.Add( Severity.Error, range, "No input files given"); } else { if (result.outputPrefix == null) { diagnostics.Add( Severity.Error, range, "When multiple input files are given, an output prefix must be selected with -o"); } } int errorCount = diagnostics.Flush(System.Console.Error); if (errorCount != 0) { System.Console.Error.WriteLine( "Usage: sparkc [-o outputPrefix] file.spark file2.spark"); return null; } return result; }