From ca47896204482bf4a6979e3838bf7f09f61cebeb Mon Sep 17 00:00:00 2001
From: giy <giy@omp-system.ru>
Date: Fri, 02 Sep 2022 14:16:56 +0300
Subject: [PATCH] Обновление до версии 2.9.0

---
 QtVsTools.Core/CommandLineParser.cs |   35 ++++++++++++++---------------------
 1 files changed, 14 insertions(+), 21 deletions(-)

diff --git a/QtVsTools.Core/CommandLineParser.cs b/QtVsTools.Core/CommandLineParser.cs
index 7380cc8..995d064 100644
--- a/QtVsTools.Core/CommandLineParser.cs
+++ b/QtVsTools.Core/CommandLineParser.cs
@@ -29,10 +29,10 @@
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Text.RegularExpressions;
-using System.IO;
 
 namespace QtVsTools.Core.CommandLine
 {
@@ -40,13 +40,12 @@
 
     public class Parser
     {
-
-        List<Option> commandLineOptionList = new List<Option>();
-        Dictionary<string, int> nameHash = new Dictionary<string, int>();
-        Dictionary<int, List<string>> optionValuesHash = new Dictionary<int, List<string>>();
-        List<string> optionNames = new List<string>();
-        List<string> positionalArgumentList = new List<string>();
-        List<string> unknownOptionNames = new List<string>();
+        readonly List<Option> commandLineOptionList = new List<Option>();
+        readonly Dictionary<string, int> nameHash = new Dictionary<string, int>();
+        readonly Dictionary<int, List<string>> optionValuesHash = new Dictionary<int, List<string>>();
+        readonly List<string> optionNames = new List<string>();
+        readonly List<string> positionalArgumentList = new List<string>();
+        readonly List<string> unknownOptionNames = new List<string>();
         bool needsParsing = true;
 
         public enum SingleDashWordOptionMode
@@ -118,8 +117,7 @@
 
         IEnumerable<string> Aliases(string optionName)
         {
-            int optionIndex;
-            if (!nameHash.TryGetValue(optionName, out optionIndex)) {
+            if (!nameHash.TryGetValue(optionName, out int optionIndex)) {
                 return new List<string>();
             }
             return commandLineOptionList[optionIndex].Names;
@@ -204,8 +202,7 @@
              IEnumerator<string> argumentEnumerator, ref bool atEnd)
         {
             const char assignChar = '=';
-            int optionOffset;
-            if (nameHash.TryGetValue(optionName, out optionOffset)) {
+            if (nameHash.TryGetValue(optionName, out int optionOffset)) {
                 int assignPos = argument.IndexOf(assignChar);
                 bool withValue = !string.IsNullOrEmpty(
                     commandLineOptionList[optionOffset].ValueName);
@@ -267,7 +264,7 @@
                             var optFilePath = macros.ExpandString(argData.Substring(1));
                             string[] additionalArgs = File.ReadAllLines(
                                 Path.Combine(workingDir, optFilePath));
-                            if (additionalArgs != null) {
+                            if (additionalArgs.Length != 0) {
                                 var additionalArgsString = string.Join(" ", additionalArgs
                                     .Select(x => "\"" + x.Replace("\"", "\\\"") + "\""));
                                 arguments.AddRange(TokenizeArgs(additionalArgsString, macros));
@@ -356,10 +353,9 @@
                             if (!RegisterFoundOption(optionName)) {
                                 error = true;
                             } else {
-                                int optionOffset;
                                 Trace.Assert(nameHash.TryGetValue(
                                     optionName,
-                                    out optionOffset));
+                                    out int optionOffset));
                                 bool withValue = !string.IsNullOrEmpty(
                                     commandLineOptionList[optionOffset].ValueName);
                                 if (withValue) {
@@ -397,10 +393,9 @@
                         if (argument.Length > 2) {
                             string possibleShortOptionStyleName = argument.Substring(1, 1);
 
-                            int shortOptionIdx;
                             if (nameHash.TryGetValue(
                                 possibleShortOptionStyleName,
-                                out shortOptionIdx)) {
+                                out int shortOptionIdx)) {
                                 var arg = commandLineOptionList[shortOptionIdx];
                                 if ((arg.Flags & Option.Flag.ShortOptionStyle) != 0) {
                                     RegisterFoundOption(possibleShortOptionStyleName);
@@ -466,8 +461,7 @@
         public IEnumerable<string> Values(string optionName)
         {
             CheckParsed("Values");
-            int optionOffset;
-            if (nameHash.TryGetValue(optionName, out optionOffset)) {
+            if (nameHash.TryGetValue(optionName, out int optionOffset)) {
                 var values = optionValuesHash[optionOffset];
                 return values;
             }
@@ -525,7 +519,6 @@
         public IEnumerable<string> Names
         {
             get;
-            private set;
         }
 
         public string ValueName
@@ -558,7 +551,7 @@
 
     static class Lexer
     {
-        static Regex lexer = new Regex(
+        static readonly Regex lexer = new Regex(
             /* Newline    */ @"(\n)" +
             /* Unquoted   */ @"|((?:(?:[^\s\""])|(?:(?<=\\)\""))+)" +
             /* Quoted     */ @"|(?:\""((?:(?:[^\""])|(?:(?<=\\)\""))+)\"")" +

--
Gitblit v1.9.1