Skip to content

Commit beee5f8

Browse files
committed
New tests for parsing error when found generics in certains parts of code and fix for it.
1 parent ea22dea commit beee5f8

File tree

5 files changed

+69
-1
lines changed

5 files changed

+69
-1
lines changed

External/Plugins/ASCompletion/Model/ASFileParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1225,7 +1225,7 @@ public void ParseSrc(FileModel fileModel, string ba, bool allowBaReExtract)
12251225
}
12261226
addChar = true;
12271227
}
1228-
else
1228+
else if (foundColon)
12291229
{
12301230
evalToken = 0;
12311231
inGeneric = true;

Tests/External/Plugins/ASCompletion.Tests/ASCompletion.Tests.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@
153153
<EmbeddedResource Include="Test Files\parser\haxe\AnonymousStructuresTest.hx" />
154154
<EmbeddedResource Include="Test Files\parser\haxe\MultipleVarsAtOnceTest.hx" />
155155
<EmbeddedResource Include="Test Files\generated\haxe\ImplementInterfaceNoMembersInsertSingleProperty.hx" />
156+
<EmbeddedResource Include="Test Files\parser\haxe\NotGenericTest.hx" />
157+
<EmbeddedResource Include="Test Files\parser\as3\CompletionErrorTest.as" />
156158
</ItemGroup>
157159
<ItemGroup>
158160
<ProjectReference Include="..\..\..\..\External\Plugins\AS2Context\AS2Context.csproj">

Tests/External/Plugins/ASCompletion.Tests/Model/ASFileParserTests.cs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,33 @@ public void ParseFile_OverrideFunction()
6868
}
6969
}
7070

71+
[Test(Description = "Error #617")]
72+
public void ParseFile_CompletionError()
73+
{
74+
using (var resourceFile = new TestFile("ASCompletion.Test_Files.parser.as3.CompletionErrorTest.as"))
75+
{
76+
var plugin = Substitute.For<PluginMain>();
77+
plugin.MenuItems.Returns(new List<ToolStripItem>());
78+
var context = new AS3Context.Context(new AS3Context.AS3Settings());
79+
Context.ASContext.GlobalInit(plugin);
80+
Context.ASContext.Context = context;
81+
var model = context.GetCodeModel(File.ReadAllText(resourceFile.DestinationFile));
82+
83+
Assert.AreEqual(2, model.Members.Count); // First member = function itself
84+
85+
var funcMember = model.Members[0];
86+
Assert.AreEqual("init", funcMember.Name);
87+
Assert.AreEqual("void", funcMember.Type);
88+
Assert.AreEqual(FlagType.Function, funcMember.Flags & FlagType.Function);
89+
Assert.AreEqual("args", funcMember.Parameters[0].Name);
90+
Assert.AreEqual("String", funcMember.Parameters[0].Type);
91+
92+
var infoMember = model.Members[1];
93+
Assert.AreEqual("info", infoMember.Name);
94+
Assert.AreEqual("NativeProcessStartupInfo", infoMember.Type);
95+
Assert.AreEqual(FlagType.Variable, infoMember.Flags & FlagType.Variable);
96+
}
97+
}
7198
}
7299

73100
[TestFixture]
@@ -1468,6 +1495,31 @@ public void ParseFile_IdentifiersWithUnicodeChars()
14681495
Assert.AreEqual(8, memberModel.LineTo);
14691496
}
14701497
}
1498+
1499+
[Test]
1500+
public void ParseFile_NotGeneric()
1501+
{
1502+
using (var resourceFile = new TestFile("ASCompletion.Test_Files.parser.haxe.NotGenericTest.hx"))
1503+
{
1504+
var plugin = Substitute.For<PluginMain>();
1505+
plugin.MenuItems.Returns(new List<ToolStripItem>());
1506+
var context = new HaXeContext.Context(new HaXeContext.HaXeSettings());
1507+
Context.ASContext.GlobalInit(plugin);
1508+
Context.ASContext.Context = context;
1509+
var model = context.GetCodeModel(File.ReadAllText(resourceFile.DestinationFile));
1510+
1511+
Assert.AreEqual(3, model.Members.Count); // First member = function itself
1512+
1513+
var funcMember = model.Members[0];
1514+
Assert.AreEqual("init", funcMember.Name);
1515+
Assert.AreEqual(FlagType.Function, funcMember.Flags & FlagType.Function);
1516+
var member1 = model.Members[1];
1517+
Assert.AreEqual("testA", member1.Name);
1518+
Assert.AreEqual("Int", member1.Type);
1519+
var member2 = model.Members[2];
1520+
Assert.AreEqual("i1", member2.Name);
1521+
}
1522+
}
14711523
}
14721524
}
14731525
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
function init(args:String):void
2+
{
3+
var info:NativeProcessStartupInfo = new NativeProcessStartupInfo;
4+
info.arguments = Vector.<String>(args.split(" "));
5+
info.
6+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
function init()
2+
{
3+
var testA:Int = 1;
4+
if (testA<testB) trace("asd");
5+
for (i1 in sprites)
6+
{
7+
}
8+
}

0 commit comments

Comments
 (0)