Skip to content

Commit 74c730f

Browse files
author
SlavaRa
authored
[CodeGenerator] Fixed 'class Foo extends NewClass<generator>'. fixes fdorg#2891 (fdorg#2892)
1 parent 1a9f25c commit 74c730f

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

External/Plugins/ASCompletion/Completion/ASGenerator.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,14 @@ protected virtual bool CanShowGenerateClass(ScintillaControl sci, int position,
657657
// for example: public var foo : Foo<generator>
658658
return expr.Context.Separator == ":"
659659
// for example, good: new Type()<generator>, bad: new Type().value<generator>
660-
|| (expr.Context.WordBefore == "new" && !expr.Context.Value.Contains("~."));
660+
|| (expr.Context.WordBefore == "new" && !expr.Context.Value.Contains("~."))
661+
// for example: class Foo extends Bar<generator>
662+
|| (expr.Context.WordBefore == "extends"
663+
&& ASContext.Context.CurrentClass.Flags is var flags
664+
&& flags.HasFlag(FlagType.Class)
665+
// for example: interface Foo extends Bar<generator>
666+
&& !flags.HasFlag(FlagType.Interface)
667+
&& ASContext.Context.CodeComplete.PositionIsBeforeBody(sci, position, found.InClass));
661668
}
662669

663670
/// <summary>
@@ -672,8 +679,8 @@ protected virtual bool CanShowGenerateInterface(ScintillaControl sci, int positi
672679
{
673680
return contextToken != null
674681
&& ASComplete.IsTextStyle(sci.BaseStyleAt(position - 1))
675-
// fox example: implements IFoo<generator>
676-
&& ((expr.Context.WordBefore == "implements" && ASContext.Context.CodeComplete.PositionIsBeforeBody(sci, position, found.InClass))
682+
// for example: implements IFoo<generator>
683+
&& (expr.Context.WordBefore == "implements" && ASContext.Context.CodeComplete.PositionIsBeforeBody(sci, position, found.InClass)
677684
// for example: public var foo : Fo|o
678685
|| (expr.Context.Separator == ":"));
679686
}

Tests/External/Plugins/HaxeContext.Tests/Generators/CodeGeneratorTests.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3415,8 +3415,6 @@ public string GenerateFunctionWithDefaultModifierDeclaration(string fileName, Ge
34153415
return result;
34163416
}
34173417

3418-
3419-
34203418
static IEnumerable<TestCaseData> CanGenerateEnumTestCases
34213419
{
34223420
get
@@ -3436,9 +3434,20 @@ static IEnumerable<TestCaseData> CanGenerateEnumTestCases
34363434
}
34373435
}
34383436

3437+
static IEnumerable<TestCaseData> CanGenerateClassTestCases_issue2891
3438+
{
3439+
get
3440+
{
3441+
yield return new TestCaseData("CanGenerateClass_issue2891_1", GeneratorJobType.Class)
3442+
.Returns(true)
3443+
.SetName("Can Generate Class. Issue 2891. Case 1");
3444+
}
3445+
}
3446+
34393447
[
34403448
Test,
34413449
TestCaseSource(nameof(CanGenerateEnumTestCases)),
3450+
TestCaseSource(nameof(CanGenerateClassTestCases_issue2891)),
34423451
]
34433452
public bool HasGenerator(string fileName, GeneratorJobType job)
34443453
{

Tests/External/Plugins/HaxeContext.Tests/HaxeContext.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1785,6 +1785,7 @@
17851785
<EmbeddedResource Include="Test Files\generators\code\CanGenerateEnum_2.hx" />
17861786
<EmbeddedResource Include="Test Files\generators\code\CanGenerateEnum_3.hx" />
17871787
<EmbeddedResource Include="Test Files\generators\code\CanGenerateEnum_4.hx" />
1788+
<EmbeddedResource Include="Test Files\generators\code\CanGenerateClass_issue2891_1.hx" />
17881789
</ItemGroup>
17891790
<ItemGroup />
17901791
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package;
2+
public class Issue2891_1 extends VCla$(EntryPoint)ss {
3+
}

0 commit comments

Comments
 (0)