diff options
author | Daniel Grunwald <daniel@danielgrunwald.de> | 2014-01-09 01:10:56 +0400 |
---|---|---|
committer | Daniel Grunwald <daniel@danielgrunwald.de> | 2014-01-09 01:11:38 +0400 |
commit | 571dd02b4f07a309c445c129e869074bc585a855 (patch) | |
tree | 0a179c4d95093eaa2b0ef2955ae47a0c25321d23 /ICSharpCode.NRefactory.Demo | |
parent | 1240a5fbafa423bd8c946aa10763a0ec4161b18e (diff) |
Fix CS0126 and CS0127 issues with async methods.
The resolver now reports 'void' as expected type for return expressions in void methods.
Diffstat (limited to 'ICSharpCode.NRefactory.Demo')
-rw-r--r-- | ICSharpCode.NRefactory.Demo/CSDemo.cs | 15 | ||||
-rw-r--r-- | ICSharpCode.NRefactory.Demo/SemanticTreeDialog.cs | 9 |
2 files changed, 20 insertions, 4 deletions
diff --git a/ICSharpCode.NRefactory.Demo/CSDemo.cs b/ICSharpCode.NRefactory.Demo/CSDemo.cs index bf9fd95d..523c5cc0 100644 --- a/ICSharpCode.NRefactory.Demo/CSDemo.cs +++ b/ICSharpCode.NRefactory.Demo/CSDemo.cs @@ -213,11 +213,18 @@ namespace ICSharpCode.NRefactory.Demo ICompilation compilation = project.CreateCompilation(); ResolveResult result; + IType expectedType = null; + Conversion conversion = null; if (csharpTreeView.SelectedNode != null) { var selectedNode = (AstNode)csharpTreeView.SelectedNode.Tag; CSharpAstResolver resolver = new CSharpAstResolver(compilation, syntaxTree, unresolvedFile); result = resolver.Resolve(selectedNode); // CSharpAstResolver.Resolve() never returns null + Expression expr = selectedNode as Expression; + if (expr != null) { + expectedType = resolver.GetExpectedType(expr); + conversion = resolver.GetConversion(expr); + } } else { TextLocation location = GetTextLocation(csharpCodeTextBox, csharpCodeTextBox.SelectionStart); result = ResolveAtLocation.Resolve(compilation, unresolvedFile, syntaxTree, location); @@ -226,8 +233,14 @@ namespace ICSharpCode.NRefactory.Demo return; } } - using (var dlg = new SemanticTreeDialog(result)) + using (var dlg = new SemanticTreeDialog()) { + dlg.AddRoot("Resolve() = ", result); + if (expectedType != null) + dlg.AddRoot("GetExpectedType() = ", expectedType); + if (conversion != null) + dlg.AddRoot("GetConversion() = ", conversion); dlg.ShowDialog(); + } } void CSharpCodeTextBoxKeyDown(object sender, KeyEventArgs e) diff --git a/ICSharpCode.NRefactory.Demo/SemanticTreeDialog.cs b/ICSharpCode.NRefactory.Demo/SemanticTreeDialog.cs index 7fb57b6d..85d9e16a 100644 --- a/ICSharpCode.NRefactory.Demo/SemanticTreeDialog.cs +++ b/ICSharpCode.NRefactory.Demo/SemanticTreeDialog.cs @@ -32,14 +32,17 @@ namespace ICSharpCode.NRefactory.Demo /// </summary> public partial class SemanticTreeDialog : Form { - public SemanticTreeDialog(ResolveResult rr) + public SemanticTreeDialog() { // // The InitializeComponent() call is required for Windows Forms designer support. // InitializeComponent(); - - var rootNode = MakeObjectNode("Resolve() = ", rr); + } + + public void AddRoot(string prefix, object obj) + { + var rootNode = MakeObjectNode(prefix, obj); rootNode.Expand(); treeView.Nodes.Add(rootNode); } |