Exemple #1
0
        private Uri?TryGetNormalizedModulePath(Uri parentFileUri, ModuleDeclarationSyntax moduleDeclarationSyntax, out DiagnosticBuilder.ErrorBuilderDelegate?failureBuilder)
        {
            var pathName = SyntaxHelper.TryGetModulePath(moduleDeclarationSyntax, out var getModulePathFailureBuilder);

            if (pathName == null)
            {
                failureBuilder = getModulePathFailureBuilder;
                return(null);
            }

            if (!ValidateModulePath(pathName, out var validateModulePathFailureBuilder))
            {
                failureBuilder = validateModulePathFailureBuilder;
                return(null);
            }

            var moduleUri = fileResolver.TryResolveModulePath(parentFileUri, pathName);

            if (moduleUri == null)
            {
                failureBuilder = x => x.ModulePathCouldNotBeResolved(pathName, parentFileUri.LocalPath);
                return(null);
            }

            failureBuilder = null;
            return(moduleUri);
        }
        private string?TryGetNormalizedModulePath(string parentFileName, ModuleDeclarationSyntax moduleDeclarationSyntax, out DiagnosticBuilder.ErrorBuilderDelegate?failureBuilder)
        {
            var pathName = SyntaxHelper.TryGetModulePath(moduleDeclarationSyntax, out var getModulePathFailureBuilder);

            if (pathName == null)
            {
                failureBuilder = getModulePathFailureBuilder;
                return(null);
            }

            if (pathName.Contains('\\'))
            {
                // enforce '/' rather than '\' for module paths for cross-platform compatibility
                failureBuilder = x => x.ModulePathBackslashUnsupported();
                return(null);
            }

            var fullPath = fileResolver.TryResolveModulePath(parentFileName, pathName);

            if (fullPath == null)
            {
                failureBuilder = x => x.ModulePathCouldNotBeResolved(pathName, parentFileName);
                return(null);
            }

            failureBuilder = null;
            return(fullPath);
        }
Exemple #3
0
 public virtual void VisitModuleDeclarationSyntax(ModuleDeclarationSyntax syntax)
 {
     this.Visit(syntax.Keyword);
     this.Visit(syntax.Name);
     this.Visit(syntax.Path);
     this.Visit(syntax.Assignment);
     this.Visit(syntax.Body);
 }
Exemple #4
0
 public virtual void VisitModuleDeclarationSyntax(ModuleDeclarationSyntax syntax)
 {
     this.VisitNodes(syntax.LeadingNodes);
     this.Visit(syntax.Keyword);
     this.Visit(syntax.Name);
     this.Visit(syntax.Path);
     this.Visit(syntax.Assignment);
     this.Visit(syntax.Value);
 }
        protected virtual ModuleDeclarationSyntax ReplaceModuleDeclarationSyntax(ModuleDeclarationSyntax syntax)
        {
            var hasChanges = Rewrite(syntax.Keyword, out var keyword);

            hasChanges |= Rewrite(syntax.Name, out var name);
            hasChanges |= Rewrite(syntax.Path, out var path);
            hasChanges |= Rewrite(syntax.Assignment, out var assignment);
            hasChanges |= Rewrite(syntax.Body, out var body);

            if (!hasChanges)
            {
                return(syntax);
            }

            return(new ModuleDeclarationSyntax(keyword, name, path, assignment, body));
        }
Exemple #6
0
        protected virtual SyntaxBase ReplaceModuleDeclarationSyntax(ModuleDeclarationSyntax syntax)
        {
            var hasChanges = TryRewrite(syntax.LeadingNodes, out var leadingNodes);

            hasChanges |= TryRewriteStrict(syntax.Keyword, out var keyword);
            hasChanges |= TryRewriteStrict(syntax.Name, out var name);
            hasChanges |= TryRewrite(syntax.Path, out var path);
            hasChanges |= TryRewrite(syntax.Assignment, out var assignment);
            hasChanges |= TryRewrite(syntax.Value, out var value);

            if (!hasChanges)
            {
                return(syntax);
            }

            return(new ModuleDeclarationSyntax(leadingNodes, keyword, name, path, assignment, value));
        }
        protected virtual ModuleDeclarationSyntax ReplaceModuleDeclarationSyntax(ModuleDeclarationSyntax syntax)
        {
            var hasChanges = Rewrite(syntax.LeadingNodes, out var leadingNodes);

            hasChanges |= Rewrite(syntax.Keyword, out var keyword);
            hasChanges |= Rewrite(syntax.Name, out var name);
            hasChanges |= Rewrite(syntax.Path, out var path);
            hasChanges |= Rewrite(syntax.Assignment, out var assignment);
            hasChanges |= RewriteNullable(syntax.IfCondition, out var ifExpression);
            hasChanges |= Rewrite(syntax.Body, out var body);

            if (!hasChanges)
            {
                return(syntax);
            }

            return(new ModuleDeclarationSyntax(leadingNodes, keyword, name, path, assignment, ifExpression, body));
        }
Exemple #8
0
        public static string?TryGetModulePath(ModuleDeclarationSyntax moduleDeclarationSyntax, out DiagnosticBuilder.ErrorBuilderDelegate?failureBuilder)
        {
            var pathSyntax = moduleDeclarationSyntax.TryGetPath();

            if (pathSyntax == null)
            {
                failureBuilder = x => x.ModulePathHasNotBeenSpecified();
                return(null);
            }

            var pathValue = pathSyntax.TryGetLiteralValue();

            if (pathValue == null)
            {
                failureBuilder = x => x.ModulePathInterpolationUnsupported();
                return(null);
            }

            failureBuilder = null;
            return(pathValue);
        }
Exemple #9
0
 void ISyntaxVisitor.VisitModuleDeclarationSyntax(ModuleDeclarationSyntax syntax) => ReplaceCurrent(syntax, ReplaceModuleDeclarationSyntax);