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); }
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); }
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)); }
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)); }
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); }
void ISyntaxVisitor.VisitModuleDeclarationSyntax(ModuleDeclarationSyntax syntax) => ReplaceCurrent(syntax, ReplaceModuleDeclarationSyntax);