Skip to content

Commit 3c33e9f

Browse files
author
SlavaRa
authored
Support for 'string'.foreach. fixes #75 (#76)
1 parent e215b69 commit 3c33e9f

File tree

8 files changed

+45
-9
lines changed

8 files changed

+45
-9
lines changed

PostfixCodeCompletion.Tests/Completion/PostfixGeneratorTests.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -206,27 +206,31 @@ public IEnumerable<TestCaseData> Foreach
206206
yield return
207207
GetTestCaseFromArray("foreach")
208208
.Returns(ReadCode("AfterGenerateForeach_fromArray"))
209-
.SetName("foreach from array.|");
209+
.SetName("array.foreach|");
210210
yield return
211211
GetTestCaseFromArrayInitializer("foreach")
212212
.Returns(ReadCode("AfterGenerateForeach_fromArrayInitializer"))
213-
.SetName("foreach from [].|");
213+
.SetName("[].foreach|");
214214
yield return
215215
GetTestCaseFromObject("foreach")
216216
.Returns(ReadCode("AfterGenerateForeach_fromObject"))
217-
.SetName("foreach from object.|");
217+
.SetName("object.foreach|");
218218
yield return
219219
GetTestCaseFromObjectInitializer("foreach")
220220
.Returns(ReadCode("AfterGenerateForeach_fromObjectInitializer"))
221-
.SetName("foreach from {}.|");
221+
.SetName("{}.foreach|");
222222
yield return
223223
GetTestCaseFromDictionary("foreach")
224224
.Returns(ReadCode("AfterGenerateForeach_fromDictionary"))
225-
.SetName("foreach from dictionary.|");
225+
.SetName("dictionary.foreach|");
226226
yield return
227227
GetTestCaseFromVector("foreach")
228228
.Returns(ReadCode("AfterGenerateForeach_fromVector"))
229-
.SetName("foreach from vector.|");
229+
.SetName("vector.foreach|");
230+
yield return
231+
GetTestCaseFromString("foreach")
232+
.Returns(ReadCode("AfterGenerateString.foreach"))
233+
.SetName("'string'.foreach|");
230234
}
231235
}
232236

PostfixCodeCompletion.Tests/PostfixCodeCompletion.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@
172172
<EmbeddedResource Include="Test Files\generated\as3\AfterGenerateFor_fromVectorInitializer.as" />
173173
<EmbeddedResource Include="Test Files\generated\as3\AfterGenerateString.for.as" />
174174
<EmbeddedResource Include="Test Files\generated\as3\AfterGenerateString.forr.as" />
175+
<EmbeddedResource Include="Test Files\generated\as3\AfterGenerateString.foreach.as" />
175176
</ItemGroup>
176177
<ItemGroup />
177178
<ItemGroup>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package {
2+
public class Main {
3+
public function Main() {
4+
for (var i:int = 0; i < "".length; i++) {
5+
var char:String = "".charAt(i);
6+
7+
}
8+
}
9+
}
10+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
for each (var item:$(CollectionItemType) in $(PCCCollection|PCCHash)) $(CSLB){
22
$(EntryPoint)
3+
}
4+
#pcc:PCCString
5+
for (var $(ItmUniqueVar):int = 0; $(ItmUniqueVar) < $(PCCString).length; $(ItmUniqueVar)++) $(CSLB){
6+
var char:String = $(PCCString).charAt($(ItmUniqueVar));
7+
$(EntryPoint)
38
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
for (it in $(PCCCollection|PCCHash)) $(CSLB){
22
$(EntryPoint)
33
}
4+
#pcc:PCCString
5+
for ($(ItmUniqueVar) in 0...$(PCCString).length) $(CSLB){
6+
var char = $(PCCString).charAt($(EntryPoint));
7+
$(EntryPoint)
8+
}

PostfixCodeCompletion/Helpers/TemplateUtils.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,13 @@ internal static Dictionary<string, string> GetTemplates(string type)
8080

8181
internal static string GetTemplate(string snippet, string[] types)
8282
{
83+
var result = string.Empty;
8384
foreach (var type in types)
8485
{
85-
var result = GetTemplate(snippet, type);
86-
if (!string.IsNullOrEmpty(result)) return result;
86+
var r = GetTemplate(snippet, type);
87+
if (!string.IsNullOrEmpty(r) && r != result) result = r;
8788
}
88-
return string.Empty;
89+
return result;
8990
}
9091
internal static string GetTemplate(string snippet, string type)
9192
{
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
for each (var item:$(CollectionItemType) in $(PCCCollection|PCCHash)) $(CSLB){
22
$(EntryPoint)
3+
}
4+
#pcc:PCCString
5+
for (var $(ItmUniqueVar):int = 0; $(ItmUniqueVar) < $(PCCString).length; $(ItmUniqueVar)++) $(CSLB){
6+
var char:String = $(PCCString).charAt($(ItmUniqueVar));
7+
$(EntryPoint)
38
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
for (it in $(PCCCollection|PCCHash)) $(CSLB){
22
$(EntryPoint)
33
}
4+
#pcc:PCCString
5+
for ($(ItmUniqueVar) in 0...$(PCCString).length) $(CSLB){
6+
var char = $(PCCString).charAt($(EntryPoint));
7+
$(EntryPoint)
8+
}

0 commit comments

Comments
 (0)