Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 2ecbb83

Browse files
committed
Merge NRefactory ff0393ce92e1adf0 into SharpDevelop
1 parent 02493cf commit 2ecbb83

File tree

23 files changed

+254
-60
lines changed

23 files changed

+254
-60
lines changed

src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/Opportunities/ConvertToLambdaExpressionIssue.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ public override void VisitLambdaExpression(LambdaExpression lambdaExpression)
7272
}
7373
if (returnTypes.Count > 1)
7474
return;
75+
// can't convert return statements without expression.
76+
var returnExpr = node as ReturnStatement;
77+
if (returnExpr != null && returnExpr.Expression.IsNull)
78+
return;
7579

7680
AddIssue(new CodeIssue(
7781
node,

src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Analysis/SemanticHighlightingVisitor.cs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -292,17 +292,11 @@ void HighlightStringFormatItems(PrimitiveExpression expr)
292292
}
293293
start = new TextLocation(line, col);
294294
}
295-
col++;
296295
if (ch == '}' &&!start.IsEmpty) {
297-
char next = i + 1 < expr.LiteralValue.Length ? expr.LiteralValue [i + 1] : '\0';
298-
if (next == '}') {
299-
i++;
300-
col += 2;
301-
continue;
302-
}
303-
Colorize(start, new TextLocation(line, col), stringFormatItemColor);
296+
Colorize(start, new TextLocation(line, col + 1), stringFormatItemColor);
304297
start = TextLocation.Empty;
305298
}
299+
col++;
306300
}
307301

308302
}

src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Ast/DepthFirstAstVisitor.cs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,11 @@ public virtual void VisitNamedExpression (NamedExpression namedExpression)
622622
VisitChildren (namedExpression);
623623
}
624624

625+
public virtual void VisitErrorNode(AstNode errorNode)
626+
{
627+
VisitChildren(errorNode);
628+
}
629+
625630
public virtual void VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern)
626631
{
627632
VisitChildren (placeholder);
@@ -1223,7 +1228,12 @@ public virtual T VisitNamedExpression (NamedExpression namedExpression)
12231228
{
12241229
return VisitChildren (namedExpression);
12251230
}
1226-
1231+
1232+
public virtual T VisitErrorNode(AstNode errorNode)
1233+
{
1234+
return VisitChildren(errorNode);
1235+
}
1236+
12271237
public virtual T VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern)
12281238
{
12291239
return VisitChildren (placeholder);
@@ -1825,7 +1835,12 @@ public virtual S VisitNamedExpression (NamedExpression namedExpression, T data)
18251835
{
18261836
return VisitChildren (namedExpression, data);
18271837
}
1828-
1838+
1839+
public virtual S VisitErrorNode(AstNode errorNode, T data)
1840+
{
1841+
return VisitChildren(errorNode, data);
1842+
}
1843+
18291844
public virtual S VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern, T data)
18301845
{
18311846
return VisitChildren (placeholder, data);

src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Ast/ErrorNode.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,22 +57,22 @@ public override TextLocation EndLocation {
5757
public ErrorNode ()
5858
{
5959
}
60-
61-
public override void AcceptVisitor (IAstVisitor visitor)
60+
61+
public override void AcceptVisitor(IAstVisitor visitor)
6262
{
63+
visitor.VisitErrorNode(this);
6364
}
64-
65-
public override T AcceptVisitor<T> (IAstVisitor<T> visitor)
65+
66+
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
6667
{
67-
return default (T);
68+
return visitor.VisitErrorNode(this);
6869
}
69-
70-
public override S AcceptVisitor<T, S> (IAstVisitor<T, S> visitor, T data)
70+
71+
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
7172
{
72-
// nothing
73-
return default (S);
73+
return visitor.VisitErrorNode(this, data);
7474
}
75-
75+
7676
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
7777
{
7878
var o = other as ErrorNode;

src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Ast/Expressions/ErrorExpression.cs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -106,21 +106,19 @@ public ErrorExpression (string error, TextLocation location)
106106

107107
public override void AcceptVisitor (IAstVisitor visitor)
108108
{
109-
// nothing
109+
visitor.VisitErrorNode(this);
110110
}
111111

112112
public override T AcceptVisitor<T> (IAstVisitor<T> visitor)
113113
{
114-
// nothing
115-
return default (T);
114+
return visitor.VisitErrorNode(this);
116115
}
117-
116+
118117
public override S AcceptVisitor<T, S> (IAstVisitor<T, S> visitor, T data)
119118
{
120-
// nothing
121-
return default(S);
119+
return visitor.VisitErrorNode(this, data);
122120
}
123-
121+
124122
protected internal override bool DoMatch (AstNode other, PatternMatching.Match match)
125123
{
126124
var o = other as ErrorExpression;

src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Ast/IAstVisitor.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ public interface IAstVisitor
148148
void VisitIdentifier(Identifier identifier);
149149

150150
void VisitNullNode(AstNode nullNode);
151+
void VisitErrorNode(AstNode errorNode);
151152
void VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern);
152153
}
153154

@@ -279,6 +280,7 @@ public interface IAstVisitor<out S>
279280
S VisitIdentifier(Identifier identifier);
280281

281282
S VisitNullNode(AstNode nullNode);
283+
S VisitErrorNode(AstNode errorNode);
282284
S VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern);
283285
}
284286

@@ -410,6 +412,7 @@ public interface IAstVisitor<in T, out S>
410412
S VisitIdentifier(Identifier identifier, T data);
411413

412414
S VisitNullNode(AstNode nullNode, T data);
415+
S VisitErrorNode(AstNode errorNode, T data);
413416
S VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern, T data);
414417
}
415418
}

src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Ast/ObservableAstVisitor.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,11 @@ void Visit<T>(Action<T> enter, Action<T> leave, T node) where T : AstNode
4848
void IAstVisitor.VisitNullNode(AstNode nullNode)
4949
{
5050
}
51-
51+
52+
void IAstVisitor.VisitErrorNode(AstNode nullNode)
53+
{
54+
}
55+
5256
public event Action<SyntaxTree> EnterSyntaxTree, LeaveSyntaxTree;
5357

5458
void IAstVisitor.VisitSyntaxTree(SyntaxTree unit)
@@ -614,7 +618,7 @@ void IAstVisitor.VisitDirectionExpression(DirectionExpression directionExpressio
614618
{
615619
Visit(EnterDirectionExpression, LeaveDirectionExpression, directionExpression);
616620
}
617-
621+
618622
public event Action<MemberReferenceExpression> EnterMemberReferenceExpression, LeaveMemberReferenceExpression;
619623

620624
void IAstVisitor.VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression)

src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/Formatter/FormattingVisitor.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,8 @@ void AdjustNewLineBlock(AstNode startNode, int targetMinimumNewLineCount)
170170
builder.Append(options.EolMarker);
171171
}
172172
var offset = document.GetOffset(newLineInsertPosition);
173-
AddChange(offset, 0, builder.ToString());
173+
if (offset >= 0)
174+
AddChange(offset, 0, builder.ToString());
174175
} else if (currentNewLineCount == targetMinimumNewLineCount && node is NewLineNode){
175176
// // Check to see if there are any newlines to remove
176177
// var endNode = node.GetNextSibling(n => !(n is NewLineNode || n is WhitespaceNode));

src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/ICSharpCode.NRefactory.CSharp.csproj

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<?xml version="1.0" encoding="utf-8"?>
1+
<?xml version="1.0" encoding="utf-8"?>
22
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
33
<PropertyGroup>
44
<ProjectGuid>{53DCA265-3C3C-42F9-B647-F72BA678122B}</ProjectGuid>
@@ -11,7 +11,7 @@
1111
<AllowUnsafeBlocks>False</AllowUnsafeBlocks>
1212
<NoStdLib>False</NoStdLib>
1313
<WarningLevel>4</WarningLevel>
14-
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
14+
<TreatWarningsAsErrors>False</TreatWarningsAsErrors>
1515
<ProductVersion>8.0.30703</ProductVersion>
1616
<SchemaVersion>2.0</SchemaVersion>
1717
<SignAssembly>true</SignAssembly>
@@ -21,6 +21,8 @@
2121
<DocumentationFile>..\bin\$(Configuration)\ICSharpCode.NRefactory.CSharp.xml</DocumentationFile>
2222
<NoWarn>1591,1587,1570</NoWarn>
2323
<OutputPath>..\bin\$(Configuration)\</OutputPath>
24+
<NoWin32Manifest>False</NoWin32Manifest>
25+
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
2426
</PropertyGroup>
2527
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
2628
<PlatformTarget>AnyCPU</PlatformTarget>
@@ -38,9 +40,10 @@
3840
<Optimize>True</Optimize>
3941
<CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
4042
<DefineConstants>TRACE;FULL_AST;NET_4_0</DefineConstants>
43+
<BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
4144
</PropertyGroup>
4245
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
43-
<DebugType>none</DebugType>
46+
<DebugType>PdbOnly</DebugType>
4447
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
4548
<OutputPath>..\bin\Release\</OutputPath>
4649
</PropertyGroup>
@@ -414,4 +417,4 @@
414417
<Folder Include="PatternMatching\" />
415418
<Folder Include="IndentEngine\" />
416419
</ItemGroup>
417-
</Project>
420+
</Project>

src/Libraries/NRefactory/ICSharpCode.NRefactory.CSharp/OutputVisitor/CSharpOutputVisitor.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2223,8 +2223,14 @@ public void VisitIdentifier(Identifier identifier)
22232223
void IAstVisitor.VisitNullNode(AstNode nullNode)
22242224
{
22252225
}
2226+
2227+
void IAstVisitor.VisitErrorNode(AstNode errorNode)
2228+
{
2229+
StartNode(errorNode);
2230+
EndNode(errorNode);
2231+
}
22262232
#endregion
2227-
2233+
22282234
#region Pattern Nodes
22292235
public void VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern)
22302236
{

0 commit comments

Comments
 (0)