private Dom.ICompilationUnit ConvertCompilationUnit(NRefactory.Ast.CompilationUnit cu) { Dom.NRefactoryResolver.NRefactoryASTConvertVisitor converter; converter = new Dom.NRefactoryResolver.NRefactoryASTConvertVisitor(Global.Projects.CSProjectContent); cu.AcceptVisitor(converter, null); return(converter.Cu); }
public override ParsedDocument Parse (ProjectDom dom, string fileName, string content) { using (ICSharpCode.NRefactory.IParser parser = ICSharpCode.NRefactory.ParserFactory.CreateParser (ICSharpCode.NRefactory.SupportedLanguage.CSharp, new StringReader (content))) { ParsedDocument result = new ParsedDocument (fileName); result.CompilationUnit = new MonoDevelop.Projects.Dom.CompilationUnit (fileName); parser.Errors.Error += delegate(int line, int col, string message) { result.Add (new Error (ErrorType.Error, line, col, message)); }; parser.Lexer.SpecialCommentTags = LexerTags; parser.Lexer.EvaluateConditionalCompilation = true; if (dom != null && dom.Project != null) { DotNetProjectConfiguration conf = dom.Project.DefaultConfiguration as DotNetProjectConfiguration; CSharpCompilerParameters par = conf != null ? conf.CompilationParameters as CSharpCompilerParameters : null; if (par != null) parser.Lexer.SetConditionalCompilationSymbols (par.DefineSymbols); } parser.Parse (); SpecialTracker tracker = new SpecialTracker (result); foreach (ICSharpCode.NRefactory.ISpecial special in parser.Lexer.SpecialTracker.CurrentSpecials) { special.AcceptVisitor (tracker, null); } foreach (ICSharpCode.NRefactory.Parser.TagComment tagComment in parser.Lexer.TagComments) { result.Add (new Tag (tagComment.Tag, tagComment.CommentText, new DomRegion (tagComment.StartPosition.Y, tagComment.StartPosition.X, tagComment.EndPosition.Y, tagComment.EndPosition.X))); } ConversionVisitior visitor = new ConversionVisitior (result, parser.Lexer.SpecialTracker.CurrentSpecials); visitor.VisitCompilationUnit (parser.CompilationUnit, null); result.CompilationUnit.Tag = parser.CompilationUnit; LastUnit = parser.CompilationUnit; return result; } }
List <MonoDevelop.Projects.CodeGeneration.MemberReference> GetReferences(ResolveResult resolveResult) { INode member = null; if (resolveResult is MemberResolveResult) { member = ((MemberResolveResult)resolveResult).ResolvedMember; if (member == null) { member = dom.GetType(resolveResult.ResolvedType); } } if (resolveResult is ParameterResolveResult) { member = ((ParameterResolveResult)resolveResult).Parameter; } if (resolveResult is LocalVariableResolveResult) { member = ((LocalVariableResolveResult)resolveResult).LocalVariable; } if (member != null) { try { NRefactoryResolver resolver = new NRefactoryResolver(dom, Document.CompilationUnit, ICSharpCode.NRefactory.SupportedLanguage.CSharp, Document.TextEditor, Document.FileName); FindMemberAstVisitor visitor = new FindMemberAstVisitor(textEditorData.Document, resolver, member); visitor.IncludeXmlDocumentation = true; ICSharpCode.NRefactory.Ast.CompilationUnit unit = Document.CompilationUnit.Tag as ICSharpCode.NRefactory.Ast.CompilationUnit; if (unit == null) { return(null); } visitor.RunVisitor(unit); return(visitor.FoundReferences); } catch (Exception e) { LoggingService.LogError("Error in highlight usages extension.", e); } } return(null); }
public override ParsedDocument Parse (ProjectDom dom, string fileName, string content) { using (ICSharpCode.NRefactory.IParser parser = ICSharpCode.NRefactory.ParserFactory.CreateParser (ICSharpCode.NRefactory.SupportedLanguage.CSharp, new StringReader (content))) { ParsedDocument result = new ParsedDocument (fileName); result.CompilationUnit = new MonoDevelop.Projects.Dom.CompilationUnit (fileName); parser.ParseMethodBodies = false; parser.Errors.Error += delegate(int line, int col, string message) { result.Add (new Error (ErrorType.Error, line, col, message)); }; parser.Lexer.SpecialCommentTags = ProjectDomService.SpecialCommentTags.GetNames (); parser.Lexer.EvaluateConditionalCompilation = true; if (dom != null && dom.Project != null && MonoDevelop.Ide.IdeApp.Workspace != null) { DotNetProjectConfiguration configuration = dom.Project.GetConfiguration (MonoDevelop.Ide.IdeApp.Workspace.ActiveConfiguration) as DotNetProjectConfiguration; CSharpCompilerParameters par = configuration != null ? configuration.CompilationParameters as CSharpCompilerParameters : null; if (par != null) parser.Lexer.SetConditionalCompilationSymbols (par.DefineSymbols); } parser.Parse (); SpecialTracker tracker = new SpecialTracker (result); foreach (ICSharpCode.NRefactory.ISpecial special in parser.Lexer.SpecialTracker.CurrentSpecials) { special.AcceptVisitor (tracker, null); } foreach (ICSharpCode.NRefactory.Parser.TagComment tagComment in parser.Lexer.TagComments) { result.Add (new Tag (tagComment.Tag, tagComment.CommentText, new DomRegion (tagComment.StartPosition.Y, tagComment.StartPosition.X, tagComment.EndPosition.Y, tagComment.EndPosition.X))); } ConversionVisitior visitor = new ConversionVisitior (dom, result, parser.Lexer.SpecialTracker.CurrentSpecials); visitor.VisitCompilationUnit (parser.CompilationUnit, null); result.CompilationUnit.Tag = parser.CompilationUnit; LastUnit = parser.CompilationUnit; return result; } }
public override object VisitCompilationUnit(ICSharpCode.NRefactory.Ast.CompilationUnit compilationUnit, object data) { //TODO: Imports, Comments compilationUnit.AcceptChildren(this, data); return(cu); }
public syntax_tree_node get_syntax_tree(ICSharpCode.NRefactory.Ast.CompilationUnit unit, string FileName) { unit_module mod = null; List <string> imports = new List <string>(); foreach (ICSharpCode.NRefactory.Ast.INode cu in unit.Children) { if (cu is ICSharpCode.NRefactory.Ast.TypeDeclaration) { ICSharpCode.NRefactory.Ast.TypeDeclaration td = cu as ICSharpCode.NRefactory.Ast.TypeDeclaration; if (td.Type == ICSharpCode.NRefactory.Ast.ClassType.Module) { mod = new unit_module(); mod.Language = LanguageId.VBNET; mod.file_name = FileName; mod.unit_name = new unit_name(); mod.unit_name.idunit_name = new ident(td.Name); mod.compiler_directives = new List <compiler_directive>(); mod.compiler_directives.Add(new compiler_directive(new token_info("reference"), new token_info("System.dll"))); mod.compiler_directives.Add(new compiler_directive(new token_info("reference"), new token_info("Microsoft.VisualBasic.dll"))); mod.compiler_directives.Add(new compiler_directive(new token_info("reference"), new token_info("System.Windows.Forms.dll"))); mod.compiler_directives.Add(new compiler_directive(new token_info("reference"), new token_info("System.Drawing.dll"))); mod.source_context = get_source_context(td); mod.interface_part = new interface_node(); mod.interface_part.interface_definitions = new declarations(); //mod.interface_part.source_context = new SourceContext(td.StartLocation.Line,td.StartLocation.Column,td.EndLocation.Line,td.EndLocation.Column); mod.interface_part.uses_modules = new uses_list(); foreach (string s in imports) { List <ident> id_name = new List <ident>(); id_name.Add(new ident(s)); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(id_name))); } List <ident> ids = new List <ident>(); ids.Add(new ident("Microsoft.VisualBasic.Strings")); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(ids))); ids = new List <ident>(); ids.Add(new ident("System")); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(ids))); ids = new List <ident>(); ids.Add(new ident("System.Collections.Generic")); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(ids))); ids = new List <ident>(); ids.Add(new ident("Microsoft.VisualBasic.Constants")); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(ids))); ids = new List <ident>(); ids.Add(new ident("Microsoft.VisualBasic.VBMath")); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(ids))); ids = new List <ident>(); ids.Add(new ident("Microsoft.VisualBasic.Information")); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(ids))); ids = new List <ident>(); ids.Add(new ident("Microsoft.VisualBasic.Interaction")); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(ids))); ids = new List <ident>(); ids.Add(new ident("Microsoft.VisualBasic.FileSystem")); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(ids))); ids = new List <ident>(); ids.Add(new ident("Microsoft.VisualBasic.Financial")); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(ids))); ids = new List <ident>(); ids.Add(new ident("Microsoft.VisualBasic.DateAndTime")); mod.interface_part.uses_modules.units.Add(new unit_or_namespace(new ident_list(ids))); add_module_members(mod, td); } } else if (cu is ICSharpCode.NRefactory.Ast.UsingDeclaration) { ICSharpCode.NRefactory.Ast.UsingDeclaration usings = cu as ICSharpCode.NRefactory.Ast.UsingDeclaration; for (int i = 0; i < usings.Usings.Count; i++) { imports.Add(usings.Usings[i].Name); } } } return(mod); }