Browse Source

Fixed position of EOF token.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5705 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Daniel Grunwald 15 years ago
parent
commit
24bf6cb70d
  1. 5
      src/AddIns/Misc/CodeCoverage/Test/CodeCoverage.Tests.csproj
  2. 3
      src/Libraries/NRefactory/Project/Src/Lexer/AbstractLexer.cs
  3. 6
      src/Libraries/NRefactory/Project/Src/Lexer/Token.cs
  4. 10
      src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Lexer.cs
  5. 19
      src/Libraries/NRefactory/Test/Lexer/CSharp/LexerPositionTests.cs
  6. 32
      src/Libraries/NRefactory/Test/Lexer/VBNet/LexerPositionTests.cs
  7. 10
      src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj
  8. 2
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs
  9. 5
      src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/ICSharpCode.SharpDevelop.Dom.Tests.csproj
  10. 29
      src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/NRefactoryAstConverterTests.cs

5
src/AddIns/Misc/CodeCoverage/Test/CodeCoverage.Tests.csproj

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<OutputType>Library</OutputType>
<RootNamespace>ICSharpCode.CodeCoverage.Tests</RootNamespace>
@ -11,7 +12,7 @@ @@ -11,7 +12,7 @@
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x86</PlatformTarget>
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>

3
src/Libraries/NRefactory/Project/Src/Lexer/AbstractLexer.cs

@ -77,7 +77,6 @@ namespace ICSharpCode.NRefactory.Parser @@ -77,7 +77,6 @@ namespace ICSharpCode.NRefactory.Parser
protected int ReaderRead()
{
++col;
int val = reader.Read();
if (recordRead)
recordedText.Append ((char)val);
@ -85,6 +84,8 @@ namespace ICSharpCode.NRefactory.Parser @@ -85,6 +84,8 @@ namespace ICSharpCode.NRefactory.Parser
++line;
col = 1;
LineBreak ();
} else if (val >= 0) {
col++;
}
return val;
}

6
src/Libraries/NRefactory/Project/Src/Lexer/Token.cs

@ -60,10 +60,6 @@ namespace ICSharpCode.NRefactory.Parser @@ -60,10 +60,6 @@ namespace ICSharpCode.NRefactory.Parser
}
}
public Token(int kind) : this(kind, 0, 0)
{
}
public Token(int kind, int col, int line) : this (kind, col, line, null)
{
}
@ -74,7 +70,7 @@ namespace ICSharpCode.NRefactory.Parser @@ -74,7 +70,7 @@ namespace ICSharpCode.NRefactory.Parser
this.col = col;
this.line = line;
this.val = val;
this.endLocation = new Location(col + (string.IsNullOrEmpty(val) ? 1 : val.Length), line);
this.endLocation = new Location(col + (val == null ? 1 : val.Length), line);
}
internal Token(int kind, int x, int y, string val, object literalValue, LiteralFormat literalFormat)

10
src/Libraries/NRefactory/Project/Src/Lexer/VBNet/Lexer.cs

@ -40,9 +40,9 @@ namespace ICSharpCode.NRefactory.Parser.VB @@ -40,9 +40,9 @@ namespace ICSharpCode.NRefactory.Parser.VB
curToken = curToken.next;
if (curToken.kind == Tokens.EOF && !(lastToken.kind == Tokens.EOL)) { // be sure that before EOF there is an EOL token
curToken = new Token(Tokens.EOL, curToken.col, curToken.line, "\n");
curToken = new Token(Tokens.EOL, curToken.col, curToken.line, string.Empty);
specialTracker.InformToken(curToken.kind);
curToken.next = new Token(Tokens.EOF, curToken.col, curToken.line, "\n");
curToken.next = new Token(Tokens.EOF, curToken.col, curToken.line, string.Empty);
specialTracker.InformToken(curToken.next.kind);
}
//Console.WriteLine("Tok:" + Tokens.GetTokenString(curToken.kind) + " --- " + curToken.val);
@ -62,7 +62,7 @@ namespace ICSharpCode.NRefactory.Parser.VB @@ -62,7 +62,7 @@ namespace ICSharpCode.NRefactory.Parser.VB
Location startLocation = new Location(Col, Line);
int nextChar = ReaderRead();
if (nextChar == -1)
return new Token(Tokens.EOF);
return new Token(Tokens.EOF, Col, Line, string.Empty);
char ch = (char)nextChar;
if (Char.IsWhiteSpace(ch)) {
if (HandleLineEnd(ch)) {
@ -80,7 +80,7 @@ namespace ICSharpCode.NRefactory.Parser.VB @@ -80,7 +80,7 @@ namespace ICSharpCode.NRefactory.Parser.VB
if (ch == '_') {
if (ReaderPeek() == -1) {
errors.Error(Line, Col, String.Format("No EOF expected after _"));
return new Token(Tokens.EOF);
return new Token(Tokens.EOF, Col, Line, string.Empty);
}
if (!Char.IsWhiteSpace((char)ReaderPeek())) {
int x = Col - 1;
@ -102,7 +102,7 @@ namespace ICSharpCode.NRefactory.Parser.VB @@ -102,7 +102,7 @@ namespace ICSharpCode.NRefactory.Parser.VB
ch = (char)ReaderRead();
} else {
errors.Error(Line, Col, String.Format("No EOF expected after _"));
return new Token(Tokens.EOF);
return new Token(Tokens.EOF, Col, Line, string.Empty);
}
}
if (!lineEnd) {

19
src/Libraries/NRefactory/Test/Lexer/CSharp/LexerPositionTests.cs

@ -233,5 +233,24 @@ namespace ICSharpCode.NRefactory.Tests.Lexer.CSharp @@ -233,5 +233,24 @@ namespace ICSharpCode.NRefactory.Tests.Lexer.CSharp
Assert.AreEqual(new Location(1, 1), t.Location);
Assert.AreEqual(new Location(2, 2), t.EndLocation);
}
[Test]
public void TestPositionOfEOF1()
{
ILexer l = GenerateLexer("public");
l.NextToken(); // public
Token t = l.NextToken();
Assert.AreEqual(new Location(7, 1), t.Location);
Assert.AreEqual(new Location(7, 1), t.EndLocation);
}
[Test]
public void TestPositionOfEOF2()
{
ILexer l = GenerateLexer("\n ");
Token t = l.NextToken();
Assert.AreEqual(new Location(2, 2), t.Location);
Assert.AreEqual(new Location(2, 2), t.EndLocation);
}
}
}

32
src/Libraries/NRefactory/Test/Lexer/VBNet/LexerPositionTests.cs

@ -56,5 +56,37 @@ namespace ICSharpCode.NRefactory.Tests.Lexer.VB @@ -56,5 +56,37 @@ namespace ICSharpCode.NRefactory.Tests.Lexer.VB
Assert.AreEqual(new Location(1, 2), t.Location);
Assert.AreEqual(new Location(7, 2), t.EndLocation);
}
[Test]
public void TestPositionOfEOF1()
{
ILexer l = GenerateLexer("public");
l.NextToken(); // public
Token t = l.NextToken();
Assert.AreEqual(Tokens.EOL, t.Kind);
Assert.AreEqual(new Location(7, 1), t.Location);
Assert.AreEqual(new Location(7, 1), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.EOF, t.Kind);
Assert.AreEqual(new Location(7, 1), t.Location);
Assert.AreEqual(new Location(7, 1), t.EndLocation);
}
[Test]
public void TestPositionOfEOF2()
{
ILexer l = GenerateLexer("public _\n ");
l.NextToken(); // public
Token t = l.NextToken();
Assert.AreEqual(Tokens.EOL, t.Kind);
Assert.AreEqual(new Location(2, 2), t.Location);
Assert.AreEqual(new Location(2, 2), t.EndLocation);
t = l.NextToken();
Assert.AreEqual(Tokens.EOF, t.Kind);
Assert.AreEqual(new Location(2, 2), t.Location);
Assert.AreEqual(new Location(2, 2), t.EndLocation);
}
}
}

10
src/Main/Base/Test/ICSharpCode.SharpDevelop.Tests.csproj

@ -22,15 +22,15 @@ @@ -22,15 +22,15 @@
<CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
<DebugType>Full</DebugType>
<RegisterForComInterop>False</RegisterForComInterop>
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x86</PlatformTarget>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugSymbols>False</DebugSymbols>
<PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<ItemGroup>
<Reference Include="PresentationCore">

2
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/ProjectContentRegistry.cs

@ -198,7 +198,7 @@ namespace ICSharpCode.SharpDevelop.Dom @@ -198,7 +198,7 @@ namespace ICSharpCode.SharpDevelop.Dom
try {
pc = LoadProjectContent(itemInclude, itemFileName);
} catch (Exception ex) {
HostCallback.ShowAssemblyLoadErrorInternal(itemFileName, itemInclude, "Error loading assembly:\n" + ex.ToString());
HostCallback.ShowError("Error loading assembly " + itemFileName, ex);
} finally {
#if DEBUG
LoggingService.Debug(string.Format("Loaded {0} in {1}ms", itemInclude, Environment.TickCount - time));

5
src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/ICSharpCode.SharpDevelop.Dom.Tests.csproj

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectGuid>{7DB80259-24D4-46C3-A024-53FF1987733D}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -31,7 +32,7 @@ @@ -31,7 +32,7 @@
<RegisterForComInterop>False</RegisterForComInterop>
<GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
<BaseAddress>4194304</BaseAddress>
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x86</PlatformTarget>
<FileAlignment>4096</FileAlignment>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.Targets" />

29
src/Main/ICSharpCode.SharpDevelop.Dom/Tests/ICSharpCode.SharpDevelop.Dom.Tests/NRefactoryAstConverterTests.cs

@ -18,12 +18,9 @@ namespace ICSharpCode.SharpDevelop.Dom.Tests @@ -18,12 +18,9 @@ namespace ICSharpCode.SharpDevelop.Dom.Tests
[TestFixture]
public class NRefactoryAstConverterTests
{
ICompilationUnit Parse(string code, SupportedLanguage language, bool referenceMscorlib, params IProjectContent[] references)
ICompilationUnit Parse(string code, SupportedLanguage language, params IProjectContent[] references)
{
DefaultProjectContent pc = new DefaultProjectContent();
if (referenceMscorlib) {
pc.AddReferencedContent(SharedProjectContentRegistryForTests.Instance.Mscorlib);
}
foreach (var reference in references) {
pc.AddReferencedContent(reference);
}
@ -38,16 +35,6 @@ namespace ICSharpCode.SharpDevelop.Dom.Tests @@ -38,16 +35,6 @@ namespace ICSharpCode.SharpDevelop.Dom.Tests
return visitor.Cu;
}
ICompilationUnit Parse(string code, SupportedLanguage language, bool referenceMscorlib)
{
return Parse(code, language, referenceMscorlib, new IProjectContent[0]);
}
ICompilationUnit Parse(string code, SupportedLanguage language)
{
return Parse(code, language, false);
}
ICompilationUnit Parse(string code)
{
return Parse(code, SupportedLanguage.CSharp);
@ -212,7 +199,7 @@ class X { @@ -212,7 +199,7 @@ class X {
get { return 0; }
}
}
", SupportedLanguage.CSharp, true);
", SupportedLanguage.CSharp, SharedProjectContentRegistryForTests.Instance.Mscorlib);
IProperty p = cu.Classes[0].Properties[0];
Assert.IsTrue(p.IsIndexer, "IsIndexer must be true");
@ -255,7 +242,7 @@ class Outer<T1> where T1 : IDisposable { @@ -255,7 +242,7 @@ class Outer<T1> where T1 : IDisposable {
[Test]
public void DefaultConstructorTest()
{
ICompilationUnit cu = Parse("class X { }", SupportedLanguage.CSharp, true);
ICompilationUnit cu = Parse("class X { }", SupportedLanguage.CSharp, SharedProjectContentRegistryForTests.Instance.Mscorlib);
Assert.AreEqual(0, cu.Classes[0].Methods.Count);
@ -267,7 +254,7 @@ class Outer<T1> where T1 : IDisposable { @@ -267,7 +254,7 @@ class Outer<T1> where T1 : IDisposable {
[Test]
public void DefaultConstructorOnAbstractClassTest()
{
ICompilationUnit cu = Parse("abstract class X { }", SupportedLanguage.CSharp, true);
ICompilationUnit cu = Parse("abstract class X { }", SupportedLanguage.CSharp, SharedProjectContentRegistryForTests.Instance.Mscorlib);
Assert.AreEqual(0, cu.Classes[0].Methods.Count);
@ -279,7 +266,7 @@ class Outer<T1> where T1 : IDisposable { @@ -279,7 +266,7 @@ class Outer<T1> where T1 : IDisposable {
[Test]
public void NoDefaultConstructorWithExplicitConstructorTest()
{
ICompilationUnit cu = Parse("class X { private X(int a) {} }", SupportedLanguage.CSharp, true);
ICompilationUnit cu = Parse("class X { private X(int a) {} }", SupportedLanguage.CSharp, SharedProjectContentRegistryForTests.Instance.Mscorlib);
Assert.AreEqual(1, cu.Classes[0].Methods.Count);
@ -291,7 +278,7 @@ class Outer<T1> where T1 : IDisposable { @@ -291,7 +278,7 @@ class Outer<T1> where T1 : IDisposable {
[Test]
public void DefaultConstructorWithExplicitConstructorOnStructTest()
{
ICompilationUnit cu = Parse("struct X { private X(int a) {} }", SupportedLanguage.CSharp, true);
ICompilationUnit cu = Parse("struct X { private X(int a) {} }", SupportedLanguage.CSharp, SharedProjectContentRegistryForTests.Instance.Mscorlib);
Assert.AreEqual(1, cu.Classes[0].Methods.Count);
@ -308,7 +295,7 @@ class Outer<T1> where T1 : IDisposable { @@ -308,7 +295,7 @@ class Outer<T1> where T1 : IDisposable {
[Test]
public void NoDefaultConstructorOnStaticClassTest()
{
ICompilationUnit cu = Parse("static class X { }", SupportedLanguage.CSharp, true);
ICompilationUnit cu = Parse("static class X { }", SupportedLanguage.CSharp);
Assert.AreEqual(0, cu.Classes[0].Methods.Count);
Assert.IsFalse(cu.Classes[0].DefaultReturnType.GetMethods().Any(m => m.IsConstructor));
@ -324,7 +311,7 @@ Module StringExtensions @@ -324,7 +311,7 @@ Module StringExtensions
Sub Print(s As String)
End Sub
End Module";
ICompilationUnit cu = Parse(code, SupportedLanguage.VBNet, true,
ICompilationUnit cu = Parse(code, SupportedLanguage.VBNet, SharedProjectContentRegistryForTests.Instance.Mscorlib,
SharedProjectContentRegistryForTests.Instance.GetProjectContentForReference("System.Core", "System.Core"));
Assert.Greater(cu.Classes.Count, 0);
Assert.AreEqual("StringExtensions", cu.Classes[0].Name);

Loading…
Cancel
Save