Example #1
0
        private static async Task <int> RenameSymbolAsync(RenameSymbolCommandLineOptions options)
        {
            if (!options.TryGetProjectFilter(out ProjectFilter projectFilter))
            {
                return(ExitCodes.Error);
            }

            if (!TryParsePaths(options.Paths, out ImmutableArray <string> paths))
            {
                return(ExitCodes.Error);
            }

            if (!TryParseOptionValueAsEnum(options.OnError, OptionNames.OnError, out RenameErrorResolution errorResolution, defaultValue: RenameErrorResolution.None))
            {
                return(ExitCodes.Error);
            }

            var visibility  = Visibility.Public;
            var scopeFilter = RenameScopeFilter.All;

#if DEBUG
            if (!TryParseOptionValueAsEnum(options.Visibility, OptionNames.Visibility, out visibility))
            {
                return(ExitCodes.Error);
            }
#endif
            if (!TryParseOptionValueAsEnumFlags(options.Scope, OptionNames.Scope, out scopeFilter, defaultValue: RenameScopeFilter.All))
            {
                return(ExitCodes.Error);
            }

            if (!TryParseCodeExpression(
                    options.Match,
                    options.MatchFrom,
                    OptionNames.Match,
                    OptionNames.MatchFrom,
                    "bool",
                    typeof(bool),
                    "ISymbol",
                    typeof(ISymbol),
                    "symbol",
                    out Func <ISymbol, bool> predicate))
            {
                return(ExitCodes.Error);
            }

            string newNameFrom = options.NewNameFrom;

            if (newNameFrom == null &&
                options.NewName == null)
            {
                newNameFrom = options.MatchFrom;
            }

            if (!TryParseCodeExpression(
                    options.NewName,
                    newNameFrom,
                    OptionNames.NewName,
                    OptionNames.NewNameFrom,
                    "string",
                    typeof(string),
                    "ISymbol",
                    typeof(ISymbol),
                    "symbol",
                    out Func <ISymbol, string> getNewName))
            {
                return(ExitCodes.Error);
            }

            var command = new RenameSymbolCommand(
                options: options,
                projectFilter: projectFilter,
                scopeFilter: scopeFilter,
                visibility: visibility,
                errorResolution: errorResolution,
#if DEBUG
                ignoredCompilerDiagnostics: options.IgnoredCompilerDiagnostics,
                codeContext: options.CodeContext,
#else
                ignoredCompilerDiagnostics: null,
                codeContext: -1,
#endif
                predicate: predicate,
                getNewName: getNewName);

            CommandStatus status = await command.ExecuteAsync(paths, options.MSBuildPath, options.Properties);

            return(GetExitCode(status));
        }
Example #2
0
 public RenameSymbolCommand(
     RenameSymbolCommandLineOptions options,
     in ProjectFilter projectFilter,