Пример #1
0
        public void CanGetProjectContentPassedToGetExistingParseInfoMethod()
        {
            DefaultProjectContent projectContent = new DefaultProjectContent();

            parserService.GetExistingParseInformation(projectContent, "file.xml");
            Assert.AreSame(projectContent, parserService.ProjectContentPassedToGetExistingParseInforMethod);
        }
Пример #2
0
        public void ParseWithNullFileContent()
        {
            DefaultProjectContent projectContent = new DefaultProjectContent();
            ICompilationUnit      unit           = parser.Parse(projectContent, null, (ICSharpCode.SharpDevelop.ITextBuffer)null);

            Assert.IsInstanceOf(typeof(DefaultCompilationUnit), unit);
        }
        public void SetUpFixture()
        {
            string python = "class Test:\r\n" +
                            "\tdef __init__(self):\r\n" +
                            "\t\tpass\r\n";

            DefaultProjectContent projectContent = new DefaultProjectContent();
            PythonParser          parser         = new PythonParser();

            compilationUnit = parser.Parse(projectContent, @"C:\test.py", python);
            if (compilationUnit.Classes.Count > 0)
            {
                c = compilationUnit.Classes[0];
                if (c.Methods.Count > 0)
                {
                    method = c.Methods[0];
                }

                // Get folds.
                ParserFoldingStrategy foldingStrategy = new ParserFoldingStrategy();
                ParseInformation      parseInfo       = new ParseInformation();
                parseInfo.SetCompilationUnit(compilationUnit);

                DocumentFactory docFactory = new DocumentFactory();
                IDocument       doc        = docFactory.CreateDocument();
                doc.TextContent = python;
                List <FoldMarker> markers = foldingStrategy.GenerateFoldMarkers(doc, @"C:\Temp\test.py", parseInfo);

                if (markers.Count > 1)
                {
                    classMarker  = markers[0];
                    methodMarker = markers[1];
                }
            }
        }
        // usingMode: 0 = one using-statement for each namespace (correctly cased)
        //            1 = mixture of using statements and default imports (incorrectly cased)
        //            2 = all default imports (incorrectly cased)
        ICompilationUnit Prepare(LanguageProperties language, int usingMode)
        {
            DefaultProjectContent pc = new DefaultProjectContent();

            pc.ReferencedContents.Add(projectContentRegistry.Mscorlib);
            pc.Language = language;
            DefaultCompilationUnit cu = new DefaultCompilationUnit(pc);

            if (usingMode == 1)
            {
                cu.Usings.Add(CreateUsing(pc, "syStEm.coLLectIons"));
                pc.DefaultImports = new DefaultUsing(pc);
                pc.DefaultImports.Usings.Add("syStEm");
                pc.DefaultImports.Usings.Add("syStEm.coLLEctionS.GeNeRic");
            }
            else if (usingMode == 2)
            {
                pc.DefaultImports = new DefaultUsing(pc);
                pc.DefaultImports.Usings.Add("syStEm");
                pc.DefaultImports.Usings.Add("syStEm.coLLEctioNs");
                pc.DefaultImports.Usings.Add("syStEm.coLLEctionS.GeNeRic");
            }
            else                 // usingMode == 0
            {
                cu.Usings.Add(CreateUsing(pc, "System"));
                cu.Usings.Add(CreateUsing(pc, "System.Collections"));
                cu.Usings.Add(CreateUsing(pc, "System.Collections.Generic"));
            }
            return(cu);
        }
Пример #5
0
 public CSProject(string name, Uri location)
     : base(name, location)
 {
     FProjectContent          = new DefaultProjectContent();
     FProjectContent.Language = LanguageProperties.CSharp;
     Loaded += MsBuildProject_Loaded;
 }
Пример #6
0
 public static void add_Reference(this DefaultProjectContent projectContent, ProjectContentRegistry pcRegistry, string assemblyToLoad, Action <string> debugMessage)
 {
     try
     {
         debugMessage("Loading Code Completion Reference: {0}".format(assemblyToLoad));
         //if (!assemblyToLoad.fileExists())
         //	"file doesn't exist".error();
         IProjectContent referenceProjectContent = pcRegistry.GetProjectContentForReference(assemblyToLoad, assemblyToLoad);
         if (referenceProjectContent == null)
         {
             "referenceProjectContent was null".error();
         }
         else
         {
             projectContent.AddReferencedContent(referenceProjectContent);
             if (referenceProjectContent is ReflectionProjectContent)
             {
                 (referenceProjectContent as ReflectionProjectContent).InitializeReferences();
             }
             else
             {
                 "something when wrong in DefaultProjectContent.add_Reference".error();
             }
         }
     }
     catch (Exception ex)
     {
         ex.log("in DefaultProjectContent.add_Reference");
     }
 }
Пример #7
0
        public void setupEnvironment()
        {
            try
            {
                textEditor.ActiveTextAreaControl.TextArea.KeyEventHandler       += TextAreaKeyEventHandler;
                textEditor.ActiveTextAreaControl.TextArea.Caret.PositionChanged += Caret_PositionChanged;
                textEditor.Disposed += CloseCodeCompletionWindow;  // When the editor is disposed, close the code completion window

                //set up the ToolTipRequest event
                textEditor.ActiveTextAreaControl.TextArea.ToolTipRequest += OnToolTipRequest;

                this.pcRegistry                = new ProjectContentRegistry();
                this.myProjectContent          = new DefaultProjectContent();
                this.myProjectContent.Language = this.CurrentLanguageProperties;
                var persistanceFolder = Path.Combine(Path.GetTempPath(), "CSharpCodeCompletion");
                persistanceFolder.createFolder();
                pcRegistry.ActivatePersistence(persistanceFolder);
                // static parse current code thread
                //startParseCodeThread();
                // add references

                startAddReferencesThread();
                startParseCodeThread();
            }
            catch (Exception ex)
            {
                ex.log("in setupEnvironment");
            }
        }
Пример #8
0
        ICompilationUnit Parse(string code)
        {
            var projectContent = new DefaultProjectContent();
            var textBuffer     = new StringTextBuffer(code);

            return(parser.Parse(projectContent, @"d:\MyProject\Views\Index.cshtml", textBuffer));
        }
Пример #9
0
        ICompilationUnit ParseVB(string fileName, string fileContent)
        {
            ICSharpCode.NRefactory.IParser p = ICSharpCode.NRefactory.ParserFactory.CreateParser(ICSharpCode.NRefactory.SupportedLanguage.VBNet, new StringReader(fileContent));
            p.ParseMethodBodies = false;
            p.Parse();
            DefaultProjectContent pc = new DefaultProjectContent();

            HostCallback.GetCurrentProjectContent = delegate {
                return(pc);
            };
            pc.ReferencedContents.Add(projectContentRegistry.Mscorlib);
            pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"));
            pc.Language = LanguageProperties.VBNet;
            lastPC      = pc;
            NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc);

            visitor.VisitCompilationUnit(p.CompilationUnit, null);
            visitor.Cu.FileName = fileName;
            Assert.AreEqual(0, p.Errors.Count, "Parse error preparing compilation unit");
            visitor.Cu.ErrorsDuringCompile = p.Errors.Count > 0;
            foreach (IClass c in visitor.Cu.Classes)
            {
                pc.AddClassToNamespaceList(c);
            }

            return(visitor.Cu);
        }
Пример #10
0
 static void CreateDefaultProjectContent()
 {
     LoggingService.Info("Creating default project content");
     //LoggingService.Debug("Stacktrace is:\n" + Environment.StackTrace);
     defaultProjectContent = new DefaultProjectContent();
     defaultProjectContent.AddReferencedContent(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);
 }
Пример #11
0
        public object GetDescription(DesignItemProperty property)
        {
            IProjectContent pc = MyTypeFinder.GetProjectContent(file);

            if (pc != null)
            {
                // For attached Properties
                if (property.DependencyFullName != null && property.Name.Contains("."))
                {
                    IClass c = pc.GetClassByReflectionName(property.DependencyProperty.OwnerType.FullName, true);
                    if (c != null)
                    {
                        IMember m = DefaultProjectContent.GetMemberByReflectionName(c, property.DependencyProperty.Name + "Property");
                        if (m != null)
                        {
                            return(CodeCompletionItem.ConvertDocumentation(m.Documentation));
                        }
                    }
                }
                else
                {
                    IClass c = pc.GetClassByReflectionName(property.DeclaringType.FullName, true);
                    if (c != null)
                    {
                        IMember m = DefaultProjectContent.GetMemberByReflectionName(c, property.Name);
                        if (m != null)
                        {
                            return(CodeCompletionItem.ConvertDocumentation(m.Documentation));
                        }
                    }
                }
            }
            return(null);
        }
Пример #12
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MainForm"/> class.
        /// </summary>
        public MainForm()
        {
            // The InitializeComponent() call is required for Windows Forms designer support.
            InitializeComponent();

            textEditorControl1.ShowEOLMarkers   = false;
            textEditorControl1.ShowInvalidLines = false;

            HostCallbackImplementation.Register(this);
            CodeCompletionKeyHandler.Attach(this, textEditorControl1);
            ToolTipProvider.Attach(this, textEditorControl1);

            PcRegistry = new ProjectContentRegistry(); // Default .NET 2.0 registry

            // Persistence lets SharpDevelop.Dom create a cache file on disk so that future starts are faster.
            // It also caches XML documentation files in an on-disk hash table, thus reducing memory usage.
            // Paul Meems, 1 Sept. 2010: Create the file if it doesn't exist (Bug #1763):
            string cacheFolder = Path.Combine(Path.GetTempPath(), "CSharpCodeCompletion");

            if (!Directory.Exists(cacheFolder))
            {
                Directory.CreateDirectory(cacheFolder);
            }

            PcRegistry.ActivatePersistence(cacheFolder);

            MyProjectContent = new DefaultProjectContent
            {
                Language = IsVisualBasic ? LanguageProperties.VBNet : LanguageProperties.CSharp
            };
        }
Пример #13
0
        public void ParseWithNullFileContent()
        {
            DefaultProjectContent projectContent = new DefaultProjectContent();
            ICompilationUnit      unit           = parser.Parse(projectContent, null, null);

            Assert.IsInstanceOf(typeof(DefaultCompilationUnit), unit);
        }
Пример #14
0
        public MockTextEditor()
            : base(new TextEditor())
        {
            PropertyService.InitializeServiceForUnitTests();
            pc          = new DefaultProjectContent();
            pc.Language = LanguageProperties.VBNet;
            pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);

            Dictionary <string, string> referencedAssemblies = new Dictionary <string, string>()
            {
                { "System", typeof(Uri).Module.FullyQualifiedName },
                { "System.Core", typeof(Enumerable).Module.FullyQualifiedName },
                { "Microsoft.VisualBasic", typeof(Microsoft.VisualBasic.Constants).Module.FullyQualifiedName }
            };

            foreach (var assembly in referencedAssemblies)
            {
                IProjectContent referenceProjectContent = AssemblyParserService.DefaultProjectContentRegistry.GetProjectContentForReference(assembly.Key, assembly.Value ?? assembly.Key);
                if (referenceProjectContent == null)
                {
                    throw new Exception("Error loading " + assembly.Key);
                }
                pc.ReferencedContents.Add(referenceProjectContent);
                if (referenceProjectContent is ReflectionProjectContent)
                {
                    (referenceProjectContent as ReflectionProjectContent).InitializeReferences();
                }
            }

//			this.TextEditor.TextArea.TextView.Services.AddService(typeof(ISyntaxHighlighter), new AvalonEditSyntaxHighlighterAdapter(this.TextEditor));
            this.TextEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("VBNet");

            new VBNetLanguageBinding().Attach(this);
        }
		INode Parse(SupportedLanguage sourceLanguage, string sourceCode, out string error)
		{
			project = new DefaultProjectContent();
			project.ReferencedContents.AddRange(ReferencedContents);
			if (sourceLanguage == SupportedLanguage.VBNet) {
				project.Language = LanguageProperties.VBNet;
				project.DefaultImports = new DefaultUsing(project);
				project.DefaultImports.Usings.AddRange(DefaultImportsToAdd);
			} else {
				project.Language = LanguageProperties.CSharp;
			}
			SnippetParser parser = new SnippetParser(sourceLanguage);
			INode result = parser.Parse(sourceCode);
			error = parser.Errors.ErrorOutput;
			specials = parser.Specials;
			if (parser.Errors.Count != 0)
				return null;
			
			wasExpression = parser.SnippetType == SnippetType.Expression;
			if (wasExpression) {
				// Special case 'Expression': expressions may be replaced with other statements in the AST by the ConvertVisitor,
				// but we need to return a 'stable' node so that the correct transformed AST is returned.
				// Thus, we wrap any expressions into a statement block.
				result = MakeBlockFromExpression((Expression)result);
			}
			
			// now create a dummy compilation unit around the snippet result
			switch (parser.SnippetType) {
				case SnippetType.CompilationUnit:
					compilationUnit = (CompilationUnit)result;
					break;
				case SnippetType.Expression:
				case SnippetType.Statements:
					compilationUnit = MakeCompilationUnitFromTypeMembers(
						MakeMethodFromBlock(
							(BlockStatement)result
						));
					break;
				case SnippetType.TypeMembers:
					compilationUnit = MakeCompilationUnitFromTypeMembers(result.Children);
					break;
				default:
					throw new NotSupportedException("Unknown snippet type: " + parser.SnippetType);
			}
			
			// convert NRefactory CU in DOM CU
			NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(project);
			visitor.VisitCompilationUnit(compilationUnit, null);
			visitor.Cu.FileName = sourceLanguage == SupportedLanguage.CSharp ? "a.cs" : "a.vb";
			
			// and register the compilation unit in the DOM
			foreach (IClass c in visitor.Cu.Classes) {
				project.AddClassToNamespaceList(c);
			}
			parseInfo = new ParseInformation();
			parseInfo.SetCompilationUnit(visitor.Cu);
			
			return result;
		}
Пример #16
0
        public void ParseWithNullTextBuffer()
        {
            DefaultProjectContent projectContent = new DefaultProjectContent();
            ITextBuffer           textBuffer     = null;
            ICompilationUnit      unit           = parser.Parse(projectContent, null, textBuffer);

            Assert.IsInstanceOf(typeof(DefaultCompilationUnit), unit);
        }
Пример #17
0
        public static ParseInformation CreateParseInfo(string code)
        {
            DefaultProjectContent projectContent  = new DefaultProjectContent();
            PythonParser          parser          = new PythonParser();
            ICompilationUnit      compilationUnit = parser.Parse(projectContent, @"C:\test.py", code);

            return(new ParseInformation(compilationUnit));
        }
Пример #18
0
 public CSProject(string path)
     : base(path)
 {
     FProjectContent          = new DefaultProjectContent();
     FProjectContent.Language = LanguageProperties.CSharp;
     References.Added        += References_Changed;
     References.Removed      += References_Changed;
 }
Пример #19
0
        void TestProgram(SupportedLanguage sourceLanguage, string sourceCode, string expectedOutput)
        {
            DefaultProjectContent pc = new DefaultProjectContent();

            pc.ReferencedContents.Add(projectContentRegistry.Mscorlib);
            pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("System.Windows.Forms", "System.Windows.Forms"));
            if (sourceLanguage == SupportedLanguage.VBNet)
            {
                pc.ReferencedContents.Add(projectContentRegistry.GetProjectContentForReference("Microsoft.VisualBasic", "Microsoft.VisualBasic"));
                pc.DefaultImports = new DefaultUsing(pc);
                pc.DefaultImports.Usings.Add("System");
                pc.DefaultImports.Usings.Add("Microsoft.VisualBasic");
            }
            pc.Language = sourceLanguage == SupportedLanguage.CSharp ? LanguageProperties.CSharp : LanguageProperties.VBNet;
            HostCallback.GetCurrentProjectContent = delegate {
                return(pc);
            };

            ICSharpCode.NRefactory.IParser parser = ParserFactory.CreateParser(sourceLanguage, new StringReader(sourceCode));
            parser.Parse();
            Assert.AreEqual("", parser.Errors.ErrorOutput);

            NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc);

            visitor.VisitCompilationUnit(parser.CompilationUnit, null);
            visitor.Cu.FileName = sourceLanguage == SupportedLanguage.CSharp ? "a.cs" : "a.vb";
            foreach (IClass c in visitor.Cu.Classes)
            {
                pc.AddClassToNamespaceList(c);
            }

            ParseInformation parseInfo = new ParseInformation();

            parseInfo.SetCompilationUnit(visitor.Cu);

            if (sourceLanguage == SupportedLanguage.CSharp)
            {
                CSharpToVBNetConvertVisitor convertVisitor = new CSharpToVBNetConvertVisitor(pc, parseInfo);
                convertVisitor.RootNamespaceToRemove = "RootNamespace";
                parser.CompilationUnit.AcceptVisitor(convertVisitor, null);
            }
            else
            {
                VBNetToCSharpConvertVisitor convertVisitor = new VBNetToCSharpConvertVisitor(pc, parseInfo);
                parser.CompilationUnit.AcceptVisitor(convertVisitor, null);
            }

            IOutputAstVisitor outputVisitor = sourceLanguage == SupportedLanguage.CSharp ? (IOutputAstVisitor) new VBNetOutputVisitor() : new CSharpOutputVisitor();

            outputVisitor.Options.IndentationChar = ' ';
            outputVisitor.Options.IndentSize      = 2;
            using (SpecialNodesInserter.Install(parser.Lexer.SpecialTracker.RetrieveSpecials(),
                                                outputVisitor)) {
                outputVisitor.VisitCompilationUnit(parser.CompilationUnit, null);
            }
            Assert.AreEqual("", outputVisitor.Errors.ErrorOutput);
            Assert.AreEqual(expectedOutput.Replace("\r", ""), outputVisitor.Text.Trim().Replace("\r", ""));
        }
Пример #20
0
        public void SetUpFixture()
        {
            string python = "class";

            DefaultProjectContent projectContent = new DefaultProjectContent();
            PythonParser          parser         = new PythonParser();

            compilationUnit = parser.Parse(projectContent, @"C:\test.py", python);
        }
        public void SetUpFixture()
        {
            string Ruby = "require \"System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\"";

            DefaultProjectContent projectContent = new DefaultProjectContent();
            RubyParser            parser         = new RubyParser();

            compilationUnit = parser.Parse(projectContent, @"C:\test.rb", Ruby);
        }
Пример #22
0
        public PythonModuleCompletionItems(PythonStandardModuleType moduleType)
        {
            projectContent  = new DefaultProjectContent();
            compilationUnit = new DefaultCompilationUnit(projectContent);
            moduleClass     = new DefaultClass(compilationUnit, moduleType.Name);

            AddCompletionItemsForType(moduleType.Type);
            AddStandardCompletionItems();
        }
Пример #23
0
        void TestMember(string className, string memberName)
        {
            IClass c = mscorlib.GetClassByReflectionName(className, false);

            Assert.IsNotNull(c);
            AbstractMember m = (AbstractMember)DefaultProjectContent.GetMemberByReflectionName(c, memberName);

            Assert.AreEqual(className + "." + memberName, m.DocumentationTag.Substring(2));
        }
        public void Parse_ProjectContentPassed_ReturnsCompilationUnitWithProjectContent()
        {
            var expectedProjectContent = new DefaultProjectContent();

            ParseEmptyJavaScriptFileWithProjectContent(expectedProjectContent);

            IProjectContent projectContent = compilationUnit.ProjectContent;

            Assert.AreEqual(expectedProjectContent, projectContent);
        }
Пример #25
0
        public void Init()
        {
            DefaultProjectContent  projectContent = new DefaultProjectContent();
            DefaultCompilationUnit unit           = new DefaultCompilationUnit(projectContent);

            existingParseInfo = new ParseInformation(unit);

            parserService = new MockParserService();
            parserService.SetExistingParseInformation(@"d:\projects\test.xml", existingParseInfo);
        }
Пример #26
0
        public MockTextEditor()
            : base(new TextEditor())
        {
            PropertyService.InitializeServiceForUnitTests();
            pc = new DefaultProjectContent();
            pc.ReferencedContents.Add(AssemblyParserService.DefaultProjectContentRegistry.Mscorlib);

//			this.TextEditor.TextArea.TextView.Services.AddService(typeof(ISyntaxHighlighter), new AvalonEditSyntaxHighlighterAdapter(this.TextEditor));
            this.TextEditor.SyntaxHighlighting = HighlightingManager.Instance.GetDefinition("C#");
        }
        public void Init()
        {
            string python = "from math import *";

            DefaultProjectContent projectContent = new DefaultProjectContent();
            PythonParser          parser         = new PythonParser();

            compilationUnit = parser.Parse(projectContent, @"C:\test.py", python);
            import          = compilationUnit.UsingScope.Usings[0] as PythonFromImport;
        }
Пример #28
0
        /// <summary>
        /// Initializes a new instance of the <see cref="MainForm"/> class.
        /// </summary>
        public MainForm()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();

            //            if (IsVisualBasic) {
            //                textEditorControl1.Text = @"
            //Class A
            // Sub B
            //  Dim xx As String
            //
            // End Sub
            //End Class
            //";
            //                textEditorControl1.SetHighlighting("VBNET");
            //            } else {
            //                textEditorControl1.Text = @"using System;
            //class A
            //{
            // void B()
            // {
            //  string x;
            //
            // }
            //}
            //";
            //                textEditorControl1.SetHighlighting("C#");
            //            }
            textEditorControl1.ShowEOLMarkers   = false;
            textEditorControl1.ShowInvalidLines = false;

            HostCallbackImplementation.Register(this);
            CodeCompletionKeyHandler.Attach(this, textEditorControl1);
            ToolTipProvider.Attach(this, textEditorControl1);

            pcRegistry = new ProjectContentRegistry(); // Default .NET 2.0 registry

            // Persistence lets SharpDevelop.Dom create a cache file on disk so that
            // future starts are faster.
            // It also caches XML documentation files in an on-disk hash table, thus
            // reducing memory usage.
            // Paul Meems, 1 Sept. 2010: Create the file if it doesn't exist (Bug #1763):
            string cacheFolder = Path.Combine(Path.GetTempPath(), "CSharpCodeCompletion");

            if (!Directory.Exists(cacheFolder))
            {
                Directory.CreateDirectory(cacheFolder);
            }
            pcRegistry.ActivatePersistence(cacheFolder);

            myProjectContent          = new DefaultProjectContent();
            myProjectContent.Language = CurrentLanguageProperties;
        }
		INode Parse(SupportedLanguage sourceLanguage, string sourceCode, out string error)
		{
			project = new DefaultProjectContent();
			project.ReferencedContents.AddRange(ReferencedContents);
			if (sourceLanguage == SupportedLanguage.VBNet) {
				project.DefaultImports = new DefaultUsing(project);
				project.DefaultImports.Usings.AddRange(DefaultImportsToAdd);
			}
			SnippetParser parser = new SnippetParser(sourceLanguage);
			INode result = parser.Parse(sourceCode);
			error = parser.Errors.ErrorOutput;
			specials = parser.Specials;
			if (parser.Errors.Count != 0)
				return null;
			
			// now create a dummy compilation unit around the snippet result
			switch (parser.SnippetType) {
				case SnippetType.CompilationUnit:
					compilationUnit = (CompilationUnit)result;
					break;
				case SnippetType.Expression:
					compilationUnit = MakeCompilationUnitFromTypeMembers(
						MakeMethodFromBlock(
							MakeBlockFromExpression(
								(Expression)result
							)));
					break;
				case SnippetType.Statements:
					compilationUnit = MakeCompilationUnitFromTypeMembers(
						MakeMethodFromBlock(
							(BlockStatement)result
						));
					break;
				case SnippetType.TypeMembers:
					compilationUnit = MakeCompilationUnitFromTypeMembers(result.Children);
					break;
				default:
					throw new NotSupportedException("Unknown snippet type: " + parser.SnippetType);
			}
			
			// convert NRefactory CU in DOM CU
			NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(project);
			visitor.VisitCompilationUnit(compilationUnit, null);
			visitor.Cu.FileName = sourceLanguage == SupportedLanguage.CSharp ? "a.cs" : "a.vb";
			
			// and register the compilation unit in the DOM
			foreach (IClass c in visitor.Cu.Classes) {
				project.AddClassToNamespaceList(c);
			}
			parseInfo = new ParseInformation();
			parseInfo.SetCompilationUnit(visitor.Cu);
			
			return result;
		}
        public void SetUpFixture()
        {
            string ruby = "class Class1\r\n" +
                          "    @\r\n" +
                          "end";

            DefaultProjectContent projectContent = new DefaultProjectContent();
            RubyParser            parser         = new RubyParser();

            compilationUnit = parser.Parse(projectContent, @"C:\test.rb", ruby);
        }
        public void ParseDoesNotThrowNullReferenceException()
        {
            string ruby = "require #";

            DefaultProjectContent projectContent = new DefaultProjectContent();
            RubyParser            parser         = new RubyParser();
            ICompilationUnit      unit           = null;

            Assert.DoesNotThrow(delegate { unit = parser.Parse(projectContent, @"C:\test.rb", ruby); });
            Assert.IsNotNull(unit);
        }
Пример #32
0
        static void CreateDefaultProjectContent()
        {
            LoggingService.Info("Creating default project content");
            //LoggingService.Debug("Stacktrace is:\n" + Environment.StackTrace);
            defaultProjectContent = new DefaultProjectContent();
            defaultProjectContent.AddReferencedContent(defaultProjectContentRegistry.Mscorlib);
            Thread t = new Thread(new ThreadStart(CreateDefaultProjectContentReferences));

            t.IsBackground = true;
            t.Priority     = ThreadPriority.BelowNormal;
            t.Name         = "CreateDefaultPC";
            t.Start();
        }
		ICompilationUnit Parse(string code, SupportedLanguage language, bool referenceMscorlib)
		{
			DefaultProjectContent pc = new DefaultProjectContent();
			if (referenceMscorlib) {
				pc.AddReferencedContent(SharedProjectContentRegistryForTests.Instance.Mscorlib);
			}
			NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc);
			using (IParser p = ParserFactory.CreateParser(language, new StringReader(code))) {
				p.ParseMethodBodies = false;
				p.Parse();
				
				visitor.Specials = p.Lexer.SpecialTracker.CurrentSpecials;
				visitor.VisitCompilationUnit(p.CompilationUnit, null);
			}
			return visitor.Cu;
		}
		ICompilationUnit Parse(string code, SupportedLanguage language, params IProjectContent[] references)
		{
			DefaultProjectContent pc = new DefaultProjectContent();
			foreach (var reference in references) {
				pc.AddReferencedContent(reference);
			}
			NRefactoryASTConvertVisitor visitor = new NRefactoryASTConvertVisitor(pc, language);
			using (IParser p = ParserFactory.CreateParser(language, new StringReader(code))) {
				p.ParseMethodBodies = false;
				p.Parse();
				
				visitor.Specials = p.Lexer.SpecialTracker.CurrentSpecials;
				visitor.VisitCompilationUnit(p.CompilationUnit, null);
			}
			return visitor.Cu;
		}
		public void NestedInterfaceInGenericClass()
		{
			// See SD2-1626
			DefaultProjectContent pc = new DefaultProjectContent();
			pc.ReferencedContents.Add(SharedProjectContentRegistryForTests.Instance.Mscorlib);
			
			DefaultCompilationUnit cu = new DefaultCompilationUnit(pc);
			DefaultClass container = new DefaultClass(cu, "TestClass");
			container.TypeParameters.Add(new DefaultTypeParameter(container, "T", 0));
			
			DefaultClass innerClass = new DefaultClass(cu, container);
			innerClass.FullyQualifiedName = "TestClass.INestedInterface";
			innerClass.ClassType = ClassType.Interface;
			innerClass.TypeParameters.Add(new DefaultTypeParameter(innerClass, "T", 0));
			innerClass.Properties.Add(new DefaultProperty(innerClass, "P") {
			                          	ReturnType = new GenericReturnType(innerClass.TypeParameters[0]),
			                          	CanGet = true
			                          });
			container.InnerClasses.Add(innerClass);
			pc.AddClassToNamespaceList(container);
			
			DefaultClass targetClass = new DefaultClass(cu, "TargetClass");
			List<AbstractNode> nodes = new List<AbstractNode>();
			
			IReturnType interf = new SearchClassReturnType(pc, targetClass, 0, 0, "TestClass.INestedInterface", 1);
			interf = new ConstructedReturnType(interf, new IReturnType[] { SharedProjectContentRegistryForTests.Instance.Mscorlib.GetClass("System.String", 0).DefaultReturnType });
			
			CSharpCodeGenerator codeGen = new CSharpCodeGenerator();
			codeGen.ImplementInterface(nodes, interf, true, targetClass);
			
			Assert.AreEqual(1, nodes.Count);
			CSharpOutputVisitor output = new CSharpOutputVisitor();
			output.Options.IndentationChar = ' ';
			output.Options.IndentSize = 2;
			nodes[0].AcceptVisitor(output, null);
			Assert.AreEqual("string TestClass<string>.INestedInterface.P {\n  get {\n    throw new NotImplementedException();\n  }\n}", output.Text.Replace("\r", "").Trim());
		}
		public void SetUp()
		{
			pc = new DefaultProjectContent();
		}
Пример #37
0
 void CreateDefaultClass(string fullyQualifiedName)
 {
     projectContent = new DefaultProjectContent();
     compilationUnit = new DefaultCompilationUnit(projectContent);
     defaultClass = new DefaultClass(compilationUnit, fullyQualifiedName);
 }