Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions .github/workflows/presubmit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,29 @@ jobs:
./gradlew verifyPluginSignature
./gradlew verifyPluginStructure
working-directory: third_party

# Job 5: Verify Parser
verify-parser:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Set up JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '21'
cache: 'gradle'

- name: Verify BNF Parser Generation
run: |
./gradlew classes
./gradlew generateDart
if [[ -n $(git status --porcelain gen) ]]; then
echo "Error: Parser generation resulted in changes. Please run './gradlew generateDart' and commit the changes."
git status gen
exit 1
fi
echo "BNF grammar verification passed."
working-directory: third_party
35 changes: 35 additions & 0 deletions third_party/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@ import org.jetbrains.intellij.platform.gradle.IntelliJPlatformType
import org.jetbrains.intellij.platform.gradle.TestFrameworkType
import org.jetbrains.intellij.platform.gradle.models.ProductRelease
import org.jetbrains.intellij.platform.gradle.tasks.VerifyPluginTask
import org.jetbrains.grammarkit.tasks.GenerateLexerTask
import org.jetbrains.grammarkit.tasks.GenerateParserTask
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

// Specify UTF-8 for all compilations so we avoid Windows-1252.
allprojects {
Expand All @@ -12,6 +15,8 @@ allprojects {
tasks.withType<Test> {
systemProperty("file.encoding", "UTF-8")
}
tasks.withType<KotlinCompile> {
}
}

// Plugins - must be first
Expand All @@ -20,8 +25,11 @@ plugins {
id("org.jetbrains.kotlin.jvm") version "2.3.0" // Kotlin support
id("org.jetbrains.intellij.platform") version "2.10.5" // IntelliJ Platform Gradle Plugin
id("org.jetbrains.changelog") version "2.2.0" // Gradle Changelog Plugin
id("org.jetbrains.grammarkit") version "2023.3.0.1"
}



// Configure project's dependencies
repositories {
mavenCentral()
Expand Down Expand Up @@ -156,3 +164,30 @@ tasks.register("printCompileClasspath") {
println("--- End Compile Classpath ---")
}
}

tasks.register("generateDartParser", GenerateParserTask::class) {
sourceFile.set(file("src/main/java/com/jetbrains/lang/dart/Dart.bnf"))
targetRootOutputDir.set(file("build/gen_temp"))
pathToParser.set("com/jetbrains/lang/dart/DartParser.java")
pathToPsiRoot.set("com/jetbrains/lang/dart/psi")
purgeOldFiles.set(true)
classpath = sourceSets["main"].output + sourceSets["main"].compileClasspath
}

tasks.register("generateDartLexer", GenerateLexerTask::class) {
sourceFile.set(file("src/main/java/com/jetbrains/lang/dart/lexer/Dart.flex"))
targetOutputDir.set(file("build/gen_temp/com/jetbrains/lang/dart/lexer"))
purgeOldFiles.set(true)
}

tasks.register("generateDartDocLexer", GenerateLexerTask::class) {
sourceFile.set(file("src/main/java/com/jetbrains/lang/dart/lexer/DartDoc.flex"))
targetOutputDir.set(file("build/gen_temp/com/jetbrains/lang/dart/lexer"))
purgeOldFiles.set(true)
}

tasks.register("generateDart", Copy::class) {
dependsOn("generateDartParser", "generateDartLexer", "generateDartDocLexer")
from("build/gen_temp")
into("gen")
}
Loading
Loading