Skip to content

Commit a82d694

Browse files
committed
Test for multiple variables declared at once, and fixed them when they are initialized.
1 parent 4cb9e52 commit a82d694

File tree

4 files changed

+67
-1
lines changed

4 files changed

+67
-1
lines changed

External/Plugins/ASCompletion/Model/ASFileParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1132,7 +1132,7 @@ public void ParseSrc(FileModel fileModel, string ba, bool allowBaReExtract)
11321132
hadValue = false;
11331133
valueLength = 0;
11341134
valueMember = null;
1135-
if (!inParams && !(inConst && context != 0) && c1 != '{') continue;
1135+
if (!inParams && !(inConst && context != 0) && c1 != '{' && c1 != ',') continue;
11361136
else length = 0;
11371137
}
11381138

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
<EmbeddedResource Include="Test Files\generated\haxe\ImplementInterfacePublicMemberBehindPrivate.hx" />
152152
<EmbeddedResource Include="Test Files\completion\as3\SimpleTest.as" />
153153
<EmbeddedResource Include="Test Files\parser\haxe\AnonymousStructuresTest.hx" />
154+
<EmbeddedResource Include="Test Files\parser\haxe\MultipleVarsAtOnceTest.hx" />
154155
</ItemGroup>
155156
<ItemGroup>
156157
<ProjectReference Include="..\..\..\..\External\Plugins\AS2Context\AS2Context.csproj">

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

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1174,6 +1174,64 @@ public void ParseFile_FunctionTypesWithSubTypes()
11741174
}
11751175
}
11761176

1177+
[Test]
1178+
public void ParseFile_MultipleVarsAtOnce()
1179+
{
1180+
using (var resourceFile = new TestFile("ASCompletion.Test_Files.parser.haxe.MultipleVarsAtOnceTest.hx"))
1181+
{
1182+
var plugin = Substitute.For<PluginMain>();
1183+
plugin.MenuItems.Returns(new List<ToolStripItem>());
1184+
var context = new HaXeContext.Context(new HaXeContext.HaXeSettings());
1185+
Context.ASContext.GlobalInit(plugin);
1186+
Context.ASContext.Context = context;
1187+
var model = context.GetCodeModel(File.ReadAllText(resourceFile.DestinationFile));
1188+
1189+
Assert.AreEqual(7, model.Members.Count);
1190+
1191+
var member = model.Members[1];
1192+
Assert.AreEqual("var1", member.Name);
1193+
Assert.AreEqual(2, member.LineFrom);
1194+
Assert.AreEqual(2, member.LineTo);
1195+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
1196+
Assert.AreEqual("Int", member.Type);
1197+
1198+
member = model.Members[2];
1199+
Assert.AreEqual("var2", member.Name);
1200+
Assert.AreEqual(2, member.LineFrom);
1201+
Assert.AreEqual(2, member.LineTo);
1202+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
1203+
Assert.AreEqual("(Dynamic->Dynamic)->(Int->Int)", member.Type);
1204+
1205+
member = model.Members[3];
1206+
Assert.AreEqual("var3", member.Name);
1207+
Assert.AreEqual(3, member.LineFrom);
1208+
Assert.AreEqual(3, member.LineTo);
1209+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
1210+
Assert.AreEqual("Float", member.Type);
1211+
1212+
member = model.Members[4];
1213+
Assert.AreEqual("var4", member.Name);
1214+
Assert.AreEqual(3, member.LineFrom);
1215+
Assert.AreEqual(3, member.LineTo);
1216+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
1217+
Assert.AreEqual("String", member.Type);
1218+
1219+
member = model.Members[5];
1220+
Assert.AreEqual("var5", member.Name);
1221+
Assert.AreEqual(4, member.LineFrom);
1222+
Assert.AreEqual(4, member.LineTo);
1223+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
1224+
Assert.AreEqual("Bool", member.Type);
1225+
1226+
member = model.Members[6];
1227+
Assert.AreEqual("var6", member.Name);
1228+
Assert.AreEqual(5, member.LineFrom);
1229+
Assert.AreEqual(5, member.LineTo);
1230+
Assert.AreEqual(FlagType.Variable, member.Flags & FlagType.Variable);
1231+
Assert.AreEqual("Dynamic", member.Type);
1232+
}
1233+
}
1234+
11771235
[Test]
11781236
public void ParseFile_ComplexClass()
11791237
{
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
public function multipleVars():Void
2+
{
3+
var var1:Int, var2:(Dynamic->Dynamic)->(Int->Int);
4+
var var3:Float = 10, var4:String = "hello";
5+
var var5:Bool = true,
6+
var6:Dynamic;
7+
}

0 commit comments

Comments
 (0)