Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/NRefactory.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Grunwald <daniel@danielgrunwald.de>2011-10-29 04:21:46 +0400
committerDaniel Grunwald <daniel@danielgrunwald.de>2011-11-01 20:30:58 +0400
commitf6311990130aef7768e5ed09229785aa3ac64c25 (patch)
treeffac17bb7fae08db0af8c9d752df38da6e9ab5d2 /ICSharpCode.NRefactory.Demo
parent18e088e688a36972e0d0216ccf90e1227a262991 (diff)
Type system refactoring: split unresolved/resolved type systems.
Diffstat (limited to 'ICSharpCode.NRefactory.Demo')
-rw-r--r--ICSharpCode.NRefactory.Demo/CSDemo.cs112
1 files changed, 52 insertions, 60 deletions
diff --git a/ICSharpCode.NRefactory.Demo/CSDemo.cs b/ICSharpCode.NRefactory.Demo/CSDemo.cs
index 82dd4655..08a1d720 100644
--- a/ICSharpCode.NRefactory.Demo/CSDemo.cs
+++ b/ICSharpCode.NRefactory.Demo/CSDemo.cs
@@ -172,7 +172,7 @@ namespace ICSharpCode.NRefactory.Demo
}
}
- Lazy<IList<IProjectContent>> builtInLibs = new Lazy<IList<IProjectContent>>(
+ Lazy<IList<IUnresolvedAssembly>> builtInLibs = new Lazy<IList<IUnresolvedAssembly>>(
delegate {
Assembly[] assemblies = {
typeof(object).Assembly, // mscorlib
@@ -183,7 +183,7 @@ namespace ICSharpCode.NRefactory.Demo
// typeof(Form).Assembly, // System.Windows.Forms.dll
typeof(ICSharpCode.NRefactory.TypeSystem.IProjectContent).Assembly,
};
- IProjectContent[] projectContents = new IProjectContent[assemblies.Length];
+ IUnresolvedAssembly[] projectContents = new IUnresolvedAssembly[assemblies.Length];
Stopwatch total = Stopwatch.StartNew();
Parallel.For(
0, assemblies.Length,
@@ -199,27 +199,23 @@ namespace ICSharpCode.NRefactory.Demo
void ResolveButtonClick(object sender, EventArgs e)
{
- SimpleProjectContent project = new SimpleProjectContent();
- var parsedFile = new TypeSystemConvertVisitor(project, "dummy.cs").Convert(compilationUnit);
- project.UpdateProjectContent(null, parsedFile);
+ IProjectContent project = new CSharpProjectContent();
+ var parsedFile = compilationUnit.ToTypeSystem("dummy.cs");
+ project = project.UpdateProjectContent(null, parsedFile);
+ project = project.AddAssemblyReferences(builtInLibs.Value);
- List<ITypeResolveContext> projects = new List<ITypeResolveContext>();
- projects.Add(project);
- projects.AddRange(builtInLibs.Value);
+ ICompilation compilation = project.CreateCompilation();
+ CSharpResolver resolver = new CSharpResolver(compilation);
- using (var context = new CompositeTypeResolveContext(projects).Synchronize()) {
- CSharpResolver resolver = new CSharpResolver(context);
-
- IResolveVisitorNavigator navigator = null;
- if (csharpTreeView.SelectedNode != null) {
- navigator = new NodeListResolveVisitorNavigator(new[] { (AstNode)csharpTreeView.SelectedNode.Tag });
- }
- ResolveVisitor visitor = new ResolveVisitor(resolver, parsedFile, navigator);
- visitor.Scan(compilationUnit);
- csharpTreeView.BeginUpdate();
- ShowResolveResultsInTree(csharpTreeView.Nodes, visitor);
- csharpTreeView.EndUpdate();
+ IResolveVisitorNavigator navigator = null;
+ if (csharpTreeView.SelectedNode != null) {
+ navigator = new NodeListResolveVisitorNavigator(new[] { (AstNode)csharpTreeView.SelectedNode.Tag });
}
+ ResolveVisitor visitor = new ResolveVisitor(resolver, parsedFile, navigator);
+ visitor.Scan(compilationUnit);
+ csharpTreeView.BeginUpdate();
+ ShowResolveResultsInTree(csharpTreeView.Nodes, visitor);
+ csharpTreeView.EndUpdate();
}
void ShowResolveResultsInTree(TreeNodeCollection c, ResolveVisitor v)
@@ -256,49 +252,45 @@ namespace ICSharpCode.NRefactory.Demo
if (csharpTreeView.SelectedNode == null)
return;
- SimpleProjectContent project = new SimpleProjectContent();
- var parsedFile = new TypeSystemConvertVisitor(project, "dummy.cs").Convert(compilationUnit);
- project.UpdateProjectContent(null, parsedFile);
+ IProjectContent project = new CSharpProjectContent();
+ var parsedFile = compilationUnit.ToTypeSystem("dummy.cs");
+ project = project.UpdateProjectContent(null, parsedFile);
+ project = project.AddAssemblyReferences(builtInLibs.Value);
- List<ITypeResolveContext> projects = new List<ITypeResolveContext>();
- projects.Add(project);
- projects.AddRange(builtInLibs.Value);
+ ICompilation compilation = project.CreateCompilation();
+ CSharpResolver resolver = new CSharpResolver(compilation);
- using (var context = new CompositeTypeResolveContext(projects).Synchronize()) {
- CSharpResolver resolver = new CSharpResolver(context);
-
- AstNode node = (AstNode)csharpTreeView.SelectedNode.Tag;
- IResolveVisitorNavigator navigator = new NodeListResolveVisitorNavigator(new[] { node });
- ResolveVisitor visitor = new ResolveVisitor(resolver, parsedFile, navigator);
- visitor.Scan(compilationUnit);
- IEntity entity;
- MemberResolveResult mrr = visitor.GetResolveResult(node) as MemberResolveResult;
- TypeResolveResult trr = visitor.GetResolveResult(node) as TypeResolveResult;
- if (mrr != null) {
- entity = mrr.Member;
- } else if (trr != null) {
- entity = trr.Type.GetDefinition();
- } else {
- return;
- }
-
- FindReferences fr = new FindReferences();
- int referenceCount = 0;
- FoundReferenceCallback callback = delegate(AstNode matchNode, ResolveResult result) {
- referenceCount++;
- };
-
- var searchScopes = fr.GetSearchScopes(entity);
- navigator = new CompositeResolveVisitorNavigator(searchScopes.Select(s => s.GetNavigator(callback)).ToArray());
- visitor = new ResolveVisitor(resolver, parsedFile, navigator);
- visitor.Scan(compilationUnit);
-
- csharpTreeView.BeginUpdate();
- ShowResolveResultsInTree(csharpTreeView.Nodes, visitor);
- csharpTreeView.EndUpdate();
-
- MessageBox.Show("Found " + referenceCount + " references to " + entity.FullName);
+ AstNode node = (AstNode)csharpTreeView.SelectedNode.Tag;
+ IResolveVisitorNavigator navigator = new NodeListResolveVisitorNavigator(new[] { node });
+ ResolveVisitor visitor = new ResolveVisitor(resolver, parsedFile, navigator);
+ visitor.Scan(compilationUnit);
+ IEntity entity;
+ MemberResolveResult mrr = visitor.GetResolveResult(node) as MemberResolveResult;
+ TypeResolveResult trr = visitor.GetResolveResult(node) as TypeResolveResult;
+ if (mrr != null) {
+ entity = mrr.Member;
+ } else if (trr != null) {
+ entity = trr.Type.GetDefinition();
+ } else {
+ return;
}
+
+ FindReferences fr = new FindReferences();
+ int referenceCount = 0;
+ FoundReferenceCallback callback = delegate(AstNode matchNode, ResolveResult result) {
+ referenceCount++;
+ };
+
+ var searchScopes = fr.GetSearchScopes(entity);
+ navigator = new CompositeResolveVisitorNavigator(searchScopes.Select(s => s.GetNavigator(callback)).ToArray());
+ visitor = new ResolveVisitor(resolver, parsedFile, navigator);
+ visitor.Scan(compilationUnit);
+
+ csharpTreeView.BeginUpdate();
+ ShowResolveResultsInTree(csharpTreeView.Nodes, visitor);
+ csharpTreeView.EndUpdate();
+
+ MessageBox.Show("Found " + referenceCount + " references to " + entity.FullName);
}
}
}