Skip to content

Commit 97cf964

Browse files
committed
Merge branch 'dev' into 2018.3
2 parents e8a4d54 + ecf13af commit 97cf964

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+2863
-1326
lines changed

build.gradle.kts

Lines changed: 82 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@
88
* MIT License
99
*/
1010

11+
import net.minecrell.gradle.licenser.header.HeaderFormat
12+
import net.minecrell.gradle.licenser.header.HeaderFormatRegistry
13+
import net.minecrell.gradle.licenser.header.HeaderStyle
1114
import org.gradle.internal.jvm.Jvm
1215
import org.jetbrains.intellij.tasks.PublishTask
1316
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
17+
import kotlin.reflect.KClass
1418

1519
buildscript {
1620
repositories {
@@ -19,38 +23,38 @@ buildscript {
1923
}
2024

2125
plugins {
22-
id("org.jetbrains.kotlin.jvm") version "1.2.50" // kept in sync with IntelliJ's bundled dep
26+
id("org.jetbrains.kotlin.jvm") version "1.2.51" // kept in sync with IntelliJ's bundled dep
2327
groovy
2428
idea
25-
id("org.jetbrains.intellij") version "0.3.4"
26-
id("net.minecrell.licenser") version "0.4"
29+
id("org.jetbrains.intellij") version "0.3.9"
30+
id("net.minecrell.licenser") version "0.4.1"
2731
}
2832

2933
defaultTasks("build")
3034

3135
val CI = System.getenv("CI") != null
3236

33-
val ideaVersion: String by extra
34-
val downloadIdeaSources: String by extra
37+
val ideaVersion: String by project
38+
val downloadIdeaSources: String by project
3539

3640
// for publishing nightlies
37-
val repoUsername: String by extra
38-
val repoPassword: String by extra
39-
val repoChannel: String by extra
41+
val repoUsername: String by project
42+
val repoPassword: String by project
43+
val repoChannel: String by project
4044

41-
val compileKotlin by tasks
42-
val processResources: AbstractCopyTask by tasks
43-
val test: Test by tasks
44-
val runIde: JavaExec by tasks
45-
val publishPlugin: PublishTask by tasks
46-
val clean: Delete by tasks
45+
val compileKotlin by tasks.existing
46+
val processResources by tasks.existing<AbstractCopyTask>()
47+
val test by tasks.existing<Test>()
48+
val runIde by tasks.existing<JavaExec>()
49+
val publishPlugin by tasks.existing<PublishTask>()
50+
val clean by tasks.existing<Delete>()
4751

4852
configurations {
49-
"gradle-tooling-extension" { extendsFrom("idea"()) }
50-
"jflex"()
51-
"jflex-skeleton"()
52-
"grammar-kit"()
53-
"testLibs" { isTransitive = false }
53+
register("gradle-tooling-extension") { extendsFrom(configurations["idea"]) }
54+
register("jflex")
55+
register("jflex-skeleton")
56+
register("grammar-kit")
57+
register("testLibs") { isTransitive = false }
5458
}
5559

5660
repositories {
@@ -63,16 +67,14 @@ repositories {
6367
java {
6468
sourceCompatibility = JavaVersion.VERSION_1_8
6569
targetCompatibility = JavaVersion.VERSION_1_8
70+
}
6671

67-
sourceSets {
68-
"gradle-tooling-extension" {
69-
configurations[compileOnlyConfigurationName].extendsFrom(configurations["gradle-tooling-extension"])
70-
}
72+
val gradleToolingExtension = sourceSets.create("gradle-tooling-extension") {
73+
configurations.named<Configuration>(compileOnlyConfigurationName) {
74+
extendsFrom(configurations["gradle-tooling-extension"])
7175
}
7276
}
73-
74-
val gradleToolingExtension = java.sourceSets["gradle-tooling-extension"]!!
75-
val gradleToolingExtensionJar = task<Jar>(gradleToolingExtension.jarTaskName) {
77+
val gradleToolingExtensionJar = tasks.register<Jar>(gradleToolingExtension.jarTaskName) {
7678
from(gradleToolingExtension.output)
7779
classifier = "gradle-tooling-extension"
7880
}
@@ -83,26 +85,20 @@ dependencies {
8385

8486
compile(files(gradleToolingExtensionJar))
8587

88+
// gradle-intellij-plugin doesn't attach sources properly for Kotlin unless it's manually defined here
89+
// compileOnly since it's only here for reference
90+
compileOnly(kotlin("stdlib-jdk8"))
91+
8692
"jflex"("org.jetbrains.idea:jflex:1.7.0-b7f882a")
8793
"jflex-skeleton"("org.jetbrains.idea:jflex:1.7.0-c1fdf11:idea@skeleton")
8894
"grammar-kit"("org.jetbrains.idea:grammar-kit:1.5.1")
8995

9096
"testLibs"("org.jetbrains.idea:mockJDK:1.7-4d76c50")
9197
"testLibs"("org.spongepowered:mixin:0.7-SNAPSHOT:thin")
9298

93-
// Better way to do this?
94-
if (!ideaVersion.endsWith("SNAPSHOT")) {
95-
afterEvaluate {
96-
// This needs to happen after build number is resolved
97-
// intellij.ideaDependency.buildNumber == intellij.type-<buildnumber>
98-
// gradle-tooling-extension isn't released with major intellij versions like intellij is
99-
// intellij.type is typically IC
100-
// build number is IC-number, so + 1 is needed to remove the -
101-
"gradle-tooling-extension"("com.jetbrains.intellij.gradle:gradle-tooling-extension:${intellij.ideaDependency.buildNumber.substring(intellij.type.length + 1)}")
102-
}
103-
} else {
104-
"gradle-tooling-extension"("com.jetbrains.intellij.gradle:gradle-tooling-extension:$ideaVersion")
105-
}
99+
// For non-SNAPSHOT versions (unless Jetbrains fixes this...) find the version with:
100+
// intellij.ideaDependency.buildNumber.substring(intellij.type.length + 1)
101+
"gradle-tooling-extension"("com.jetbrains.intellij.gradle:gradle-tooling-extension:183-EAP-SNAPSHOT")
106102
}
107103

108104
intellij {
@@ -131,16 +127,16 @@ publishPlugin {
131127
}
132128
}
133129

134-
tasks.withType<JavaCompile> {
130+
tasks.withType<JavaCompile>().configureEach {
135131
options.encoding = "UTF-8"
136132
options.compilerArgs = listOf("-proc:none")
137133
}
138134

139-
tasks.withType<KotlinCompile> {
135+
tasks.withType<KotlinCompile>().configureEach {
140136
kotlinOptions.jvmTarget = JavaVersion.VERSION_1_8.toString()
141137
}
142138

143-
tasks.withType<GroovyCompile> {
139+
tasks.withType<GroovyCompile>().configureEach {
144140
options.compilerArgs = listOf("-proc:none")
145141
}
146142

@@ -168,22 +164,42 @@ idea {
168164
}
169165
}
170166

171-
// License header formatting
172167
license {
173168
header = file("copyright.txt")
174-
include("**/*.java", "**/*.kt", "**/*.kts", "**/*.groovy", "**/*.gradle", "**/*.xml", "**/*.properties", "**/*.html")
175-
exclude("com/demonwav/mcdev/platform/mcp/at/gen/**", "com/demonwav/mcdev/nbt/lang/gen/**", "com/demonwav/mcdev/i18n/lang/gen/**")
169+
style["flex"] = HeaderStyle.BLOCK_COMMENT.format
170+
style["bnf"] = HeaderStyle.BLOCK_COMMENT.format
171+
172+
include(
173+
"**/*.java",
174+
"**/*.kt",
175+
"**/*.kts",
176+
"**/*.groovy",
177+
"**/*.gradle",
178+
"**/*.xml",
179+
"**/*.properties",
180+
"**/*.html",
181+
"**/*.flex",
182+
"**/*.bnf"
183+
)
184+
exclude(
185+
"com/demonwav/mcdev/platform/mcp/at/gen/**",
186+
"com/demonwav/mcdev/nbt/lang/gen/**",
187+
"com/demonwav/mcdev/i18n/lang/gen/**"
188+
)
176189

177190
tasks {
178-
"gradle" {
191+
register("gradle") {
179192
files = project.files("build.gradle.kts", "settings.gradle.kts", "gradle.properties")
180193
}
194+
register("grammars") {
195+
files = project.fileTree("src/main/grammars")
196+
}
181197
}
182198
}
183199

184200
// Credit for this intellij-rust
185201
// https://github.com/intellij-rust/intellij-rust/blob/d6b82e6aa2f64b877a95afdd86ec7b84394678c3/build.gradle#L131-L181
186-
fun generateLexer(name: String, flex: String, pack: String) = task<JavaExec>(name) {
202+
fun generateLexer(name: String, flex: String, pack: String) = tasks.register<JavaExec>(name) {
187203
val src = "src/main/grammars/$flex.flex"
188204
val dst = "gen/com/demonwav/mcdev/$pack"
189205
val output = "$dst/$flex.java"
@@ -206,12 +222,12 @@ fun generateLexer(name: String, flex: String, pack: String) = task<JavaExec>(nam
206222
outputs.file(output)
207223
}
208224

209-
fun generatePsiAndParser(name: String, bnf: String, pack: String) = task<JavaExec>(name) {
210-
val src = "src/main/grammars/$bnf.bnf".replace("/", File.separator)
225+
fun generatePsiAndParser(name: String, bnf: String, pack: String) = tasks.register<JavaExec>(name) {
226+
val src = "src/main/grammars/$bnf.bnf".replace('/', File.separatorChar)
211227
val dstRoot = "gen"
212-
val dst = "$dstRoot/com/demonwav/mcdev/$pack".replace("/", File.separator)
213-
val psiDir = "$dst/psi/".replace("/", File.separator)
214-
val parserDir = "$dst/parser/".replace("/", File.separator)
228+
val dst = "$dstRoot/com/demonwav/mcdev/$pack".replace('/', File.separatorChar)
229+
val psiDir = "$dst/psi/".replace('/', File.separatorChar)
230+
val parserDir = "$dst/parser/".replace('/', File.separatorChar)
215231

216232
doFirst {
217233
delete(psiDir, parserDir)
@@ -240,27 +256,34 @@ val generateI18nPsiAndParser = generatePsiAndParser("generateI18nPsiAndParser",
240256

241257
val generateI18nTemplateLexer = generateLexer("generateI18nTemplateLexer", "I18nTemplateLexer", "i18n/lang/gen/")
242258

243-
val generate = task("generate") {
259+
val generate = tasks.register("generate") {
244260
group = "minecraft"
245261
description = "Generates sources needed to compile the plugin."
246-
dependsOn(generateAtLexer, generateAtPsiAndParser, generateNbttLexer, generateNbttPsiAndParser, generateI18nLexer, generateI18nPsiAndParser, generateI18nTemplateLexer)
262+
dependsOn(
263+
generateAtLexer,
264+
generateAtPsiAndParser,
265+
generateNbttLexer,
266+
generateNbttPsiAndParser,
267+
generateI18nLexer,
268+
generateI18nPsiAndParser,
269+
generateI18nTemplateLexer
270+
)
247271
outputs.dir("gen")
248272
}
249273

250-
java.sourceSets[SourceSet.MAIN_SOURCE_SET_NAME].java.srcDir(generate)
274+
sourceSets.named<SourceSet>("main") { java.srcDir(generate) }
251275

252276
// Remove gen directory on clean
253-
clean.delete(generate)
277+
clean { delete(generate) }
254278

255279
runIde {
256280
maxHeapSize = "2G"
257281

258-
(findProperty("intellijJre") as? String)?.let(this::setExecutable)
259-
260282
System.getProperty("debug")?.let {
261283
systemProperty("idea.ProcessCanceledException", "disabled")
262284
systemProperty("idea.debug.mode", "true")
263285
}
264286
}
265287

266-
inline operator fun <T : Task> T.invoke(a: T.() -> Unit): T = apply(a)
288+
inline fun <reified T : Task> TaskContainer.existing() = existing(T::class)
289+
inline fun <reified T : Task> TaskContainer.register(name: String, configuration: Action<in T>) = register(name, T::class, configuration)

gradle.properties

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@
99
#
1010

1111
# suppress inspection "UnusedProperty" for whole file
12-
ideaVersion = 183-SNAPSHOT
12+
ideaVersion = 183-EAP-SNAPSHOT
1313

14+
name = MinecraftDev
1415
group = com.demonwav.minecraft-dev
15-
version = 2018.3-1.2.9
16+
version = 2018.3-1.2.10
1617
downloadIdeaSources = true

gradle/wrapper/gradle-wrapper.jar

84 Bytes
Binary file not shown.
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
#Sat Jan 13 14:35:28 CST 2018
21
distributionBase=GRADLE_USER_HOME
32
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10-all.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-4.8.1-all.zip
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<component name="CopyrightManager">
22
<copyright>
33
<option name="myName" value="Minecraft" />
4-
<option name="notice" value="Minecraft Dev for IntelliJ&#10;&#10;https://minecraftdev.org&#10;&#10;Copyright (c) 2017 minecraft-dev&#10;&#10;MIT License" />
4+
<option name="notice" value="Minecraft Dev for IntelliJ&#10;&#10;https://minecraftdev.org&#10;&#10;Copyright (c) 2018 minecraft-dev&#10;&#10;MIT License" />
55
</copyright>
6-
</component>
6+
</component>

readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Minecraft Development for IntelliJ
1111
| **Travis (macOS)** |[![Travis macOS Build Status](https://travis-matrix-badges.herokuapp.com/repos/minecraft-dev/MinecraftDev/branches/dev/2)](https://travis-ci.org/minecraft-dev/MinecraftDev/)|
1212
| **TeamCity (Windows)** |[![TeamCity Windows Build Status](https://tc.demonwav.com/app/rest/builds/buildType:(id:MinecraftDev_WindowsBuild)/statusIcon)](https://ci.demonwav.com/viewType.html?buildTypeId=MinecraftDev_WindowsBuild)|
1313

14-
Info and Documentation [![Current Release](https://img.shields.io/badge/release-2018.3--1.2.9-orange.svg?style=flat-square)](https://plugins.jetbrains.com/plugin/8327)
14+
Info and Documentation [![Current Release](https://img.shields.io/badge/release-2018.3--1.2.10-orange.svg?style=flat-square)](https://plugins.jetbrains.com/plugin/8327)
1515
----------------------
1616

1717
<a href="https://discord.gg/j6UNcfr"><img src="https://i.imgur.com/JXu9C1G.png" height="48px"></img></a>

settings.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@
88
* MIT License
99
*/
1010

11-
rootProject.name = "MinecraftDev"
11+
val name: String by settings
12+
rootProject.name = name

src/main/grammars/AtLexer.flex

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*
44
* https://minecraftdev.org
55
*
6-
* Copyright (c) 2017 minecraft-dev
6+
* Copyright (c) 2018 minecraft-dev
77
*
88
* MIT License
99
*/
@@ -28,34 +28,46 @@ import static com.intellij.psi.TokenType.*;
2828
%implements FlexLexer
2929
%function advance
3030
%type IElementType
31+
32+
%s CLASS_NAME
33+
%s MEMBER_NAME
34+
%s TYPES
35+
3136
%unicode
3237

3338
PRIMITIVE=[ZBCSIFDJV]
34-
CLASS_VALUE=\[*([ZBCSIFDJ]|L[^;\n]+;)
39+
CLASS_VALUE=(\[+[ZBCSIFDJ]|(\[*L[^;\n]+;))
3540
KEYWORD_ELEMENT=(public|private|protected|default)([-+]f)?
36-
NAME_ELEMENT=[a-zA-Z0-9_]+|<init>
37-
CLASS_NAME_ELEMENT=[a-zA-Z_$0-9\.]*[a-zA-Z_$0-9]
41+
NAME_ELEMENT=([\p{L}_\p{Sc}][\p{L}\p{N}_\p{Sc}]*)|<init>
42+
CLASS_NAME_ELEMENT=([\p{L}_\p{Sc}][\p{L}\p{N}_\p{Sc}]*\.)*[\p{L}_\p{Sc}][\p{L}\p{N}_\p{Sc}]*
3843
COMMENT=#.*
3944
CRLF=\n|\r|\r\n
4045
WHITE_SPACE=\s
4146

4247
%%
4348

4449
<YYINITIAL> {
45-
{CRLF} { return CRLF; }
46-
{WHITE_SPACE} { return WHITE_SPACE; }
50+
{KEYWORD_ELEMENT} { yybegin(CLASS_NAME); return KEYWORD_ELEMENT; }
51+
}
4752

48-
"(" { return OPEN_PAREN; }
49-
")" { return CLOSE_PAREN; }
50-
"*" | "*()" { return ASTERISK_ELEMENT; }
53+
<CLASS_NAME> {
54+
{CLASS_NAME_ELEMENT} { yybegin(MEMBER_NAME); return CLASS_NAME_ELEMENT; }
55+
}
5156

52-
{PRIMITIVE} ({PRIMITIVE}|{CLASS_VALUE})* { zzMarkedPos = zzStartRead + 1; return PRIMITIVE; }
57+
<MEMBER_NAME> {
58+
"*" | "*()" { return ASTERISK_ELEMENT; }
59+
{NAME_ELEMENT} { yybegin(TYPES); return NAME_ELEMENT; }
60+
}
5361

62+
<TYPES> {
63+
"(" { return OPEN_PAREN; }
64+
")" { return CLOSE_PAREN; }
5465
{CLASS_VALUE} { return CLASS_VALUE; }
55-
{KEYWORD_ELEMENT} { return KEYWORD_ELEMENT; }
56-
{NAME_ELEMENT} { return NAME_ELEMENT; }
57-
{CLASS_NAME_ELEMENT} { return CLASS_NAME_ELEMENT; }
58-
{COMMENT} { return COMMENT; }
66+
{PRIMITIVE} ({PRIMITIVE}|{CLASS_VALUE})* { zzMarkedPos = zzStartRead + 1; return PRIMITIVE; }
5967
}
6068

69+
{CRLF} { yybegin(YYINITIAL); return CRLF; }
70+
{WHITE_SPACE} { return WHITE_SPACE; }
71+
72+
{COMMENT} { return COMMENT; }
6173
[^] { return BAD_CHARACTER; }

0 commit comments

Comments
 (0)