Skip to content

Commit a922aa3

Browse files
committed
Fix type linting for extension DSL objects, fixes #1024
1 parent 9389a52 commit a922aa3

4 files changed

Lines changed: 37 additions & 2 deletions

File tree

src/main/java/net/minecraftforge/gradle/internal/ForgeGradleExtensionImpl.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import net.minecraftforge.gradle.ForgeGradleExtension;
88
import org.gradle.api.plugins.ExtensionAware;
9+
import org.gradle.api.reflect.TypeOf;
910

1011
import javax.inject.Inject;
1112

@@ -20,4 +21,9 @@ static void register(
2021

2122
@Inject
2223
public ForgeGradleExtensionImpl() { }
24+
25+
@Override
26+
public TypeOf<?> getPublicType() {
27+
return ForgeGradleExtensionInternal.super.getPublicType();
28+
}
2329
}

src/main/java/net/minecraftforge/gradle/internal/ForgeGradleExtensionInternal.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,15 @@
88
import org.gradle.api.Action;
99
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
1010
import org.gradle.api.attributes.Attribute;
11+
import org.gradle.api.reflect.HasPublicType;
12+
import org.gradle.api.reflect.TypeOf;
13+
14+
interface ForgeGradleExtensionInternal extends ForgeGradleExtension, HasPublicType {
15+
@Override
16+
default TypeOf<?> getPublicType() {
17+
return TypeOf.typeOf(ForgeGradleExtension.class);
18+
}
1119

12-
interface ForgeGradleExtensionInternal extends ForgeGradleExtension {
1320
Action<MavenArtifactRepository> forgeMaven = repo -> {
1421
repo.setName("MinecraftForge");
1522
repo.setUrl(Constants.FORGE_MAVEN);

src/main/java/net/minecraftforge/gradle/internal/MinecraftExtensionImpl.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ public MinecraftExtensionImpl(ForgeGradlePlugin plugin) {
9797
this.mavenizerOutput.convention(plugin.localCaches().dir("mavenizer/output").map(this.problems.ensureFileLocation()));
9898
}
9999

100+
@Override
101+
public TypeOf<?> getPublicType() {
102+
return MinecraftExtensionInternal.super.getPublicType();
103+
}
104+
100105
@Override
101106
public Property<MinecraftMappingsInternal> getMappingsProperty() {
102107
return this.mappings;
@@ -254,6 +259,11 @@ public ForProjectImpl(ForgeGradlePlugin plugin) {
254259
getProject().afterEvaluate(this::finish);
255260
}
256261

262+
@Override
263+
public TypeOf<?> getPublicType() {
264+
return ForProject.super.getPublicType();
265+
}
266+
257267
@Override
258268
public boolean hasAccessTransformersPlugin() {
259269
return this.hasAccessTransformersPlugin;

src/main/java/net/minecraftforge/gradle/internal/MinecraftExtensionInternal.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,30 @@
99
import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
1010
import org.gradle.api.file.DirectoryProperty;
1111
import org.gradle.api.provider.Property;
12+
import org.gradle.api.reflect.HasPublicType;
13+
import org.gradle.api.reflect.TypeOf;
1214
import org.jetbrains.annotations.UnmodifiableView;
1315

1416
import java.util.List;
1517

16-
interface MinecraftExtensionInternal extends MinecraftExtension, MinecraftMappingsContainerInternal {
18+
interface MinecraftExtensionInternal extends MinecraftExtension, HasPublicType, MinecraftMappingsContainerInternal {
19+
@Override
20+
default TypeOf<?> getPublicType() {
21+
return TypeOf.typeOf(MinecraftExtension.class);
22+
}
23+
1724
Property<MinecraftMappingsInternal> getMappingsProperty();
1825

1926
DirectoryProperty getMavenizerOutput();
2027

2128
// NOTE: This internal interface does NOT implement MinecraftDependencyInternal as it is not actually a dependency!
2229
// The top-level interface implements MinecraftDependency since it acts as a default for all Minecraft dependencies.
2330
interface ForProject extends MinecraftExtensionForProject, MinecraftExtensionInternal, MinecraftAccessTransformersContainerInternal {
31+
@Override
32+
default TypeOf<?> getPublicType() {
33+
return TypeOf.typeOf(MinecraftExtensionForProject.class);
34+
}
35+
2436
@UnmodifiableView List<? extends MavenArtifactRepository> getRepositories();
2537

2638
DirectoryProperty getEclipseOutputDir();

0 commit comments

Comments
 (0)