Remove KotlinSirOrigin hierarchy in favour of direct AA usage #KT-65335 Fixed
Merge-request: KT-MR-14229 Merged-by: Artem Olkov <artem.olkov@jetbrains.com>
This commit is contained in:
@@ -9,23 +9,9 @@ description = "Swift Intermediate Representation"
|
||||
dependencies {
|
||||
compileOnly(kotlinStdlib())
|
||||
|
||||
api(project(":core:compiler.common"))
|
||||
|
||||
if (kotlinBuildProperties.isInIdeaSync) {
|
||||
compileOnly(project("tree-generator")) // Provided, so that IDEA can recognize references to this module in KDoc.
|
||||
}
|
||||
|
||||
testImplementation(kotlin("test-junit5"))
|
||||
testImplementation(platform(libs.junit.bom))
|
||||
testImplementation(libs.junit.jupiter.api)
|
||||
testRuntimeOnly(libs.junit.jupiter.engine)
|
||||
}
|
||||
|
||||
testsJar()
|
||||
|
||||
projectTest(jUnitMode = JUnitMode.JUnit5) {
|
||||
workingDir = rootDir
|
||||
useJUnitPlatform { }
|
||||
}
|
||||
|
||||
val generatorClasspath by configurations.creating
|
||||
@@ -59,7 +45,6 @@ sourceSets {
|
||||
projectDefault()
|
||||
java.srcDir(generateTree)
|
||||
}
|
||||
"test" { projectDefault() }
|
||||
}
|
||||
|
||||
if (kotlinBuildProperties.isInJpsBuildIdeaSync) {
|
||||
|
||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.sir.visitors.SirVisitor
|
||||
/**
|
||||
* Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.accessor]
|
||||
*/
|
||||
sealed class SirAccessor : SirNativeCallable() {
|
||||
sealed class SirAccessor : SirCallable() {
|
||||
abstract override val origin: SirOrigin
|
||||
abstract override val visibility: SirVisibility
|
||||
abstract override var parent: SirDeclarationParent
|
||||
|
||||
@@ -14,10 +14,10 @@ import org.jetbrains.kotlin.sir.visitors.SirVisitor
|
||||
/**
|
||||
* Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.callable]
|
||||
*/
|
||||
sealed interface SirCallable : SirDeclaration {
|
||||
override val origin: SirOrigin
|
||||
override val visibility: SirVisibility
|
||||
override var parent: SirDeclarationParent
|
||||
sealed class SirCallable : SirElementBase(), SirDeclaration {
|
||||
abstract override val origin: SirOrigin
|
||||
abstract override val visibility: SirVisibility
|
||||
abstract override var parent: SirDeclarationParent
|
||||
|
||||
override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
|
||||
visitor.visitCallable(this, data)
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
|
||||
// DO NOT MODIFY IT MANUALLY.
|
||||
|
||||
package org.jetbrains.kotlin.sir
|
||||
|
||||
import org.jetbrains.kotlin.sir.visitors.SirTransformer
|
||||
import org.jetbrains.kotlin.sir.visitors.SirVisitor
|
||||
|
||||
/**
|
||||
* Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.foreignDeclaration]
|
||||
*/
|
||||
sealed class SirForeignDeclaration : SirElementBase(), SirDeclaration {
|
||||
abstract override val origin: SirOrigin
|
||||
abstract override val visibility: SirVisibility
|
||||
abstract override var parent: SirDeclarationParent
|
||||
|
||||
override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
|
||||
visitor.visitForeignDeclaration(this, data)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
|
||||
transformer.transformForeignDeclaration(this, data) as E
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
|
||||
// DO NOT MODIFY IT MANUALLY.
|
||||
|
||||
package org.jetbrains.kotlin.sir
|
||||
|
||||
import org.jetbrains.kotlin.sir.visitors.SirTransformer
|
||||
import org.jetbrains.kotlin.sir.visitors.SirVisitor
|
||||
|
||||
/**
|
||||
* Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.foreignFunction]
|
||||
*/
|
||||
abstract class SirForeignFunction : SirForeignDeclaration(), SirCallable {
|
||||
abstract override val origin: SirOrigin
|
||||
abstract override val visibility: SirVisibility
|
||||
abstract override var parent: SirDeclarationParent
|
||||
|
||||
override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
|
||||
visitor.visitForeignFunction(this, data)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
|
||||
transformer.transformForeignFunction(this, data) as E
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
|
||||
// DO NOT MODIFY IT MANUALLY.
|
||||
|
||||
package org.jetbrains.kotlin.sir
|
||||
|
||||
import org.jetbrains.kotlin.sir.visitors.SirTransformer
|
||||
import org.jetbrains.kotlin.sir.visitors.SirVisitor
|
||||
|
||||
/**
|
||||
* Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.foreignVariable]
|
||||
*/
|
||||
abstract class SirForeignVariable : SirForeignDeclaration() {
|
||||
abstract override val origin: SirOrigin
|
||||
abstract override val visibility: SirVisibility
|
||||
abstract override var parent: SirDeclarationParent
|
||||
|
||||
override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
|
||||
visitor.visitForeignVariable(this, data)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
|
||||
transformer.transformForeignVariable(this, data) as E
|
||||
}
|
||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.sir.visitors.SirVisitor
|
||||
/**
|
||||
* Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.function]
|
||||
*/
|
||||
abstract class SirFunction : SirNativeCallable() {
|
||||
abstract class SirFunction : SirCallable() {
|
||||
abstract override val origin: SirOrigin
|
||||
abstract override val visibility: SirVisibility
|
||||
abstract override var parent: SirDeclarationParent
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
|
||||
// DO NOT MODIFY IT MANUALLY.
|
||||
|
||||
package org.jetbrains.kotlin.sir
|
||||
|
||||
import org.jetbrains.kotlin.sir.visitors.SirTransformer
|
||||
import org.jetbrains.kotlin.sir.visitors.SirVisitor
|
||||
|
||||
/**
|
||||
* Generated from: [org.jetbrains.kotlin.sir.tree.generator.SwiftIrTree.nativeCallable]
|
||||
*/
|
||||
sealed class SirNativeCallable : SirElementBase(), SirCallable {
|
||||
abstract override val origin: SirOrigin
|
||||
abstract override val visibility: SirVisibility
|
||||
abstract override var parent: SirDeclarationParent
|
||||
|
||||
override fun <R, D> accept(visitor: SirVisitor<R, D>, data: D): R =
|
||||
visitor.visitNativeCallable(this, data)
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <E : SirElement, D> transform(transformer: SirTransformer<D>, data: D): E =
|
||||
transformer.transformNativeCallable(this, data) as E
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
|
||||
// DO NOT MODIFY IT MANUALLY.
|
||||
|
||||
@file:Suppress("DuplicatedCode", "unused")
|
||||
|
||||
package org.jetbrains.kotlin.sir.builder
|
||||
|
||||
import kotlin.contracts.*
|
||||
import org.jetbrains.kotlin.sir.SirBuilderDsl
|
||||
import org.jetbrains.kotlin.sir.SirForeignFunction
|
||||
import org.jetbrains.kotlin.sir.SirOrigin
|
||||
import org.jetbrains.kotlin.sir.SirVisibility
|
||||
import org.jetbrains.kotlin.sir.impl.SirForeignFunctionImpl
|
||||
|
||||
@SirBuilderDsl
|
||||
class SirForeignFunctionBuilder {
|
||||
var origin: SirOrigin = SirOrigin.Unknown
|
||||
var visibility: SirVisibility = SirVisibility.PUBLIC
|
||||
|
||||
fun build(): SirForeignFunction {
|
||||
return SirForeignFunctionImpl(
|
||||
origin,
|
||||
visibility,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalContracts::class)
|
||||
inline fun buildForeignFunction(init: SirForeignFunctionBuilder.() -> Unit = {}): SirForeignFunction {
|
||||
contract {
|
||||
callsInPlace(init, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
return SirForeignFunctionBuilder().apply(init).build()
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalContracts::class)
|
||||
inline fun buildForeignFunctionCopy(original: SirForeignFunction, init: SirForeignFunctionBuilder.() -> Unit = {}): SirForeignFunction {
|
||||
contract {
|
||||
callsInPlace(init, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
val copyBuilder = SirForeignFunctionBuilder()
|
||||
copyBuilder.origin = original.origin
|
||||
copyBuilder.visibility = original.visibility
|
||||
return copyBuilder.apply(init).build()
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
|
||||
// DO NOT MODIFY IT MANUALLY.
|
||||
|
||||
@file:Suppress("DuplicatedCode", "unused")
|
||||
|
||||
package org.jetbrains.kotlin.sir.builder
|
||||
|
||||
import kotlin.contracts.*
|
||||
import org.jetbrains.kotlin.sir.SirBuilderDsl
|
||||
import org.jetbrains.kotlin.sir.SirForeignVariable
|
||||
import org.jetbrains.kotlin.sir.SirOrigin
|
||||
import org.jetbrains.kotlin.sir.SirVisibility
|
||||
import org.jetbrains.kotlin.sir.impl.SirForeignVariableImpl
|
||||
|
||||
@SirBuilderDsl
|
||||
class SirForeignVariableBuilder {
|
||||
var origin: SirOrigin = SirOrigin.Unknown
|
||||
var visibility: SirVisibility = SirVisibility.PUBLIC
|
||||
|
||||
fun build(): SirForeignVariable {
|
||||
return SirForeignVariableImpl(
|
||||
origin,
|
||||
visibility,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalContracts::class)
|
||||
inline fun buildForeignVariable(init: SirForeignVariableBuilder.() -> Unit = {}): SirForeignVariable {
|
||||
contract {
|
||||
callsInPlace(init, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
return SirForeignVariableBuilder().apply(init).build()
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalContracts::class)
|
||||
inline fun buildForeignVariableCopy(original: SirForeignVariable, init: SirForeignVariableBuilder.() -> Unit = {}): SirForeignVariable {
|
||||
contract {
|
||||
callsInPlace(init, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
val copyBuilder = SirForeignVariableBuilder()
|
||||
copyBuilder.origin = original.origin
|
||||
copyBuilder.visibility = original.visibility
|
||||
return copyBuilder.apply(init).build()
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
|
||||
// DO NOT MODIFY IT MANUALLY.
|
||||
|
||||
@file:Suppress("DuplicatedCode", "unused")
|
||||
|
||||
package org.jetbrains.kotlin.sir.impl
|
||||
|
||||
import org.jetbrains.kotlin.sir.SirDeclarationParent
|
||||
import org.jetbrains.kotlin.sir.SirForeignFunction
|
||||
import org.jetbrains.kotlin.sir.SirOrigin
|
||||
import org.jetbrains.kotlin.sir.SirVisibility
|
||||
import org.jetbrains.kotlin.sir.visitors.SirTransformer
|
||||
import org.jetbrains.kotlin.sir.visitors.SirVisitor
|
||||
|
||||
internal class SirForeignFunctionImpl(
|
||||
override val origin: SirOrigin,
|
||||
override val visibility: SirVisibility,
|
||||
) : SirForeignFunction() {
|
||||
override lateinit var parent: SirDeclarationParent
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: SirVisitor<R, D>, data: D) {
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: SirTransformer<D>, data: D) {
|
||||
}
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
// This file was generated automatically. See native/swift/sir/tree-generator/Readme.md.
|
||||
// DO NOT MODIFY IT MANUALLY.
|
||||
|
||||
@file:Suppress("DuplicatedCode", "unused")
|
||||
|
||||
package org.jetbrains.kotlin.sir.impl
|
||||
|
||||
import org.jetbrains.kotlin.sir.SirDeclarationParent
|
||||
import org.jetbrains.kotlin.sir.SirForeignVariable
|
||||
import org.jetbrains.kotlin.sir.SirOrigin
|
||||
import org.jetbrains.kotlin.sir.SirVisibility
|
||||
import org.jetbrains.kotlin.sir.visitors.SirTransformer
|
||||
import org.jetbrains.kotlin.sir.visitors.SirVisitor
|
||||
|
||||
internal class SirForeignVariableImpl(
|
||||
override val origin: SirOrigin,
|
||||
override val visibility: SirVisibility,
|
||||
) : SirForeignVariable() {
|
||||
override lateinit var parent: SirDeclarationParent
|
||||
|
||||
override fun <R, D> acceptChildren(visitor: SirVisitor<R, D>, data: D) {
|
||||
}
|
||||
|
||||
override fun <D> transformChildren(transformer: SirTransformer<D>, data: D) {
|
||||
}
|
||||
}
|
||||
@@ -46,14 +46,6 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
|
||||
return transformDeclaration(declaration, data)
|
||||
}
|
||||
|
||||
open fun transformForeignDeclaration(foreignDeclaration: SirForeignDeclaration, data: D): SirDeclaration {
|
||||
return transformDeclaration(foreignDeclaration, data)
|
||||
}
|
||||
|
||||
final override fun visitForeignDeclaration(declaration: SirForeignDeclaration, data: D): SirDeclaration {
|
||||
return transformForeignDeclaration(declaration, data)
|
||||
}
|
||||
|
||||
|
||||
open fun transformNamedDeclaration(namedDeclaration: SirNamedDeclaration, data: D): SirDeclaration {
|
||||
return transformDeclaration(namedDeclaration, data)
|
||||
@@ -87,14 +79,6 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
|
||||
return transformCallable(callable, data)
|
||||
}
|
||||
|
||||
open fun transformNativeCallable(nativeCallable: SirNativeCallable, data: D): SirDeclaration {
|
||||
return transformCallable(nativeCallable, data)
|
||||
}
|
||||
|
||||
final override fun visitNativeCallable(nativeCallable: SirNativeCallable, data: D): SirDeclaration {
|
||||
return transformNativeCallable(nativeCallable, data)
|
||||
}
|
||||
|
||||
open fun transformFunction(function: SirFunction, data: D): SirDeclaration {
|
||||
return transformCallable(function, data)
|
||||
}
|
||||
@@ -103,14 +87,6 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
|
||||
return transformFunction(function, data)
|
||||
}
|
||||
|
||||
open fun transformForeignFunction(foreignFunction: SirForeignFunction, data: D): SirDeclaration {
|
||||
return transformCallable(foreignFunction, data)
|
||||
}
|
||||
|
||||
final override fun visitForeignFunction(function: SirForeignFunction, data: D): SirDeclaration {
|
||||
return transformForeignFunction(function, data)
|
||||
}
|
||||
|
||||
open fun transformAccessor(accessor: SirAccessor, data: D): SirDeclaration {
|
||||
return transformCallable(accessor, data)
|
||||
}
|
||||
@@ -143,14 +119,6 @@ abstract class SirTransformer<in D> : SirVisitor<SirElement, D>() {
|
||||
return transformVariable(variable, data)
|
||||
}
|
||||
|
||||
open fun transformForeignVariable(foreignVariable: SirForeignVariable, data: D): SirDeclaration {
|
||||
return transformDeclaration(foreignVariable, data)
|
||||
}
|
||||
|
||||
final override fun visitForeignVariable(variable: SirForeignVariable, data: D): SirDeclaration {
|
||||
return transformForeignVariable(variable, data)
|
||||
}
|
||||
|
||||
open fun transformImport(import: SirImport, data: D): SirDeclaration {
|
||||
return transformDeclaration(import, data)
|
||||
}
|
||||
|
||||
@@ -38,12 +38,6 @@ abstract class SirTransformerVoid : SirTransformer<Nothing?>() {
|
||||
final override fun transformDeclaration(declaration: SirDeclaration, data: Nothing?): SirDeclaration =
|
||||
transformDeclaration(declaration)
|
||||
|
||||
open fun transformForeignDeclaration(declaration: SirForeignDeclaration): SirDeclaration =
|
||||
transformDeclaration(declaration)
|
||||
|
||||
final override fun transformForeignDeclaration(declaration: SirForeignDeclaration, data: Nothing?): SirDeclaration =
|
||||
transformForeignDeclaration(declaration)
|
||||
|
||||
open fun transformNamedDeclaration(declaration: SirNamedDeclaration): SirDeclaration =
|
||||
transformDeclaration(declaration)
|
||||
|
||||
@@ -68,24 +62,12 @@ abstract class SirTransformerVoid : SirTransformer<Nothing?>() {
|
||||
final override fun transformCallable(callable: SirCallable, data: Nothing?): SirDeclaration =
|
||||
transformCallable(callable)
|
||||
|
||||
open fun transformNativeCallable(nativeCallable: SirNativeCallable): SirDeclaration =
|
||||
transformCallable(nativeCallable)
|
||||
|
||||
final override fun transformNativeCallable(nativeCallable: SirNativeCallable, data: Nothing?): SirDeclaration =
|
||||
transformNativeCallable(nativeCallable)
|
||||
|
||||
open fun transformFunction(function: SirFunction): SirDeclaration =
|
||||
transformCallable(function)
|
||||
|
||||
final override fun transformFunction(function: SirFunction, data: Nothing?): SirDeclaration =
|
||||
transformFunction(function)
|
||||
|
||||
open fun transformForeignFunction(function: SirForeignFunction): SirDeclaration =
|
||||
transformCallable(function)
|
||||
|
||||
final override fun transformForeignFunction(function: SirForeignFunction, data: Nothing?): SirDeclaration =
|
||||
transformForeignFunction(function)
|
||||
|
||||
open fun transformAccessor(accessor: SirAccessor): SirDeclaration =
|
||||
transformCallable(accessor)
|
||||
|
||||
@@ -110,12 +92,6 @@ abstract class SirTransformerVoid : SirTransformer<Nothing?>() {
|
||||
final override fun transformVariable(variable: SirVariable, data: Nothing?): SirDeclaration =
|
||||
transformVariable(variable)
|
||||
|
||||
open fun transformForeignVariable(variable: SirForeignVariable): SirDeclaration =
|
||||
transformDeclaration(variable)
|
||||
|
||||
final override fun transformForeignVariable(variable: SirForeignVariable, data: Nothing?): SirDeclaration =
|
||||
transformForeignVariable(variable)
|
||||
|
||||
open fun transformImport(import: SirImport): SirDeclaration =
|
||||
transformDeclaration(import)
|
||||
|
||||
|
||||
@@ -26,9 +26,6 @@ abstract class SirVisitor<out R, in D> {
|
||||
open fun visitDeclaration(declaration: SirDeclaration, data: D): R =
|
||||
visitElement(declaration, data)
|
||||
|
||||
open fun visitForeignDeclaration(declaration: SirForeignDeclaration, data: D): R =
|
||||
visitDeclaration(declaration, data)
|
||||
|
||||
open fun visitNamedDeclaration(declaration: SirNamedDeclaration, data: D): R =
|
||||
visitDeclaration(declaration, data)
|
||||
|
||||
@@ -41,15 +38,9 @@ abstract class SirVisitor<out R, in D> {
|
||||
open fun visitCallable(callable: SirCallable, data: D): R =
|
||||
visitDeclaration(callable, data)
|
||||
|
||||
open fun visitNativeCallable(nativeCallable: SirNativeCallable, data: D): R =
|
||||
visitCallable(nativeCallable, data)
|
||||
|
||||
open fun visitFunction(function: SirFunction, data: D): R =
|
||||
visitCallable(function, data)
|
||||
|
||||
open fun visitForeignFunction(function: SirForeignFunction, data: D): R =
|
||||
visitCallable(function, data)
|
||||
|
||||
open fun visitAccessor(accessor: SirAccessor, data: D): R =
|
||||
visitCallable(accessor, data)
|
||||
|
||||
@@ -62,9 +53,6 @@ abstract class SirVisitor<out R, in D> {
|
||||
open fun visitVariable(variable: SirVariable, data: D): R =
|
||||
visitDeclaration(variable, data)
|
||||
|
||||
open fun visitForeignVariable(variable: SirForeignVariable, data: D): R =
|
||||
visitDeclaration(variable, data)
|
||||
|
||||
open fun visitImport(import: SirImport, data: D): R =
|
||||
visitDeclaration(import, data)
|
||||
}
|
||||
|
||||
@@ -46,14 +46,6 @@ abstract class SirVisitorVoid : SirVisitor<Unit, Nothing?>() {
|
||||
visitElement(declaration)
|
||||
}
|
||||
|
||||
final override fun visitForeignDeclaration(declaration: SirForeignDeclaration, data: Nothing?) {
|
||||
visitForeignDeclaration(declaration)
|
||||
}
|
||||
|
||||
open fun visitForeignDeclaration(declaration: SirForeignDeclaration) {
|
||||
visitDeclaration(declaration)
|
||||
}
|
||||
|
||||
final override fun visitNamedDeclaration(declaration: SirNamedDeclaration, data: Nothing?) {
|
||||
visitNamedDeclaration(declaration)
|
||||
}
|
||||
@@ -86,14 +78,6 @@ abstract class SirVisitorVoid : SirVisitor<Unit, Nothing?>() {
|
||||
visitDeclaration(callable)
|
||||
}
|
||||
|
||||
final override fun visitNativeCallable(nativeCallable: SirNativeCallable, data: Nothing?) {
|
||||
visitNativeCallable(nativeCallable)
|
||||
}
|
||||
|
||||
open fun visitNativeCallable(nativeCallable: SirNativeCallable) {
|
||||
visitCallable(nativeCallable)
|
||||
}
|
||||
|
||||
final override fun visitFunction(function: SirFunction, data: Nothing?) {
|
||||
visitFunction(function)
|
||||
}
|
||||
@@ -102,14 +86,6 @@ abstract class SirVisitorVoid : SirVisitor<Unit, Nothing?>() {
|
||||
visitCallable(function)
|
||||
}
|
||||
|
||||
final override fun visitForeignFunction(function: SirForeignFunction, data: Nothing?) {
|
||||
visitForeignFunction(function)
|
||||
}
|
||||
|
||||
open fun visitForeignFunction(function: SirForeignFunction) {
|
||||
visitCallable(function)
|
||||
}
|
||||
|
||||
final override fun visitAccessor(accessor: SirAccessor, data: Nothing?) {
|
||||
visitAccessor(accessor)
|
||||
}
|
||||
@@ -142,14 +118,6 @@ abstract class SirVisitorVoid : SirVisitor<Unit, Nothing?>() {
|
||||
visitDeclaration(variable)
|
||||
}
|
||||
|
||||
final override fun visitForeignVariable(variable: SirForeignVariable, data: Nothing?) {
|
||||
visitForeignVariable(variable)
|
||||
}
|
||||
|
||||
open fun visitForeignVariable(variable: SirForeignVariable) {
|
||||
visitDeclaration(variable)
|
||||
}
|
||||
|
||||
final override fun visitImport(import: SirImport, data: Nothing?) {
|
||||
visitImport(import)
|
||||
}
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.sir
|
||||
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
|
||||
sealed interface SirKotlinOrigin : SirOrigin.Foreign {
|
||||
val fqName: FqName
|
||||
|
||||
override val path: List<String>
|
||||
get() = fqName.pathSegments().map { it.asString() }
|
||||
|
||||
interface Function : SirKotlinOrigin {
|
||||
val documentation: Documentation?
|
||||
val parameters: List<Parameter>
|
||||
val returnType: Type
|
||||
}
|
||||
|
||||
interface Property : SirKotlinOrigin {
|
||||
val type: Type
|
||||
val isWriteable: Boolean
|
||||
}
|
||||
|
||||
interface Parameter {
|
||||
val name: String
|
||||
val type: Type
|
||||
}
|
||||
|
||||
interface Type {
|
||||
val name: String
|
||||
}
|
||||
|
||||
interface Documentation {
|
||||
val content: String
|
||||
}
|
||||
}
|
||||
@@ -13,10 +13,8 @@ sealed interface SirOrigin {
|
||||
data class Namespace(val path: List<String>) : Synthetic
|
||||
|
||||
sealed interface Foreign : SirOrigin {
|
||||
val path: List<String>
|
||||
|
||||
/** Value for nodes of origin unrepresentable or non-viable yet known to be foreign. */
|
||||
data class Unknown(override val path: List<String> = emptyList()) : Foreign
|
||||
interface SourceCode : Foreign
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.sir.constants
|
||||
|
||||
private const val KOTLIN_PACKAGE = "kotlin"
|
||||
private const val DELIMITER = "/"
|
||||
private const val KOTLIN_BUILTIN_TYPE_PREFIX = "${KOTLIN_PACKAGE}${DELIMITER}"
|
||||
|
||||
const val UNIT = "${KOTLIN_BUILTIN_TYPE_PREFIX}Unit"
|
||||
const val BYTE = "${KOTLIN_BUILTIN_TYPE_PREFIX}Byte"
|
||||
const val SHORT = "${KOTLIN_BUILTIN_TYPE_PREFIX}Short"
|
||||
const val INT = "${KOTLIN_BUILTIN_TYPE_PREFIX}Int"
|
||||
const val LONG = "${KOTLIN_BUILTIN_TYPE_PREFIX}Long"
|
||||
const val BOOLEAN = "${KOTLIN_BUILTIN_TYPE_PREFIX}Boolean"
|
||||
const val DOUBLE = "${KOTLIN_BUILTIN_TYPE_PREFIX}Double"
|
||||
const val FLOAT = "${KOTLIN_BUILTIN_TYPE_PREFIX}Float"
|
||||
@@ -58,12 +58,6 @@ class SirComparator(val options: Set<Options> = emptySet()) : SirVisitor<Boolean
|
||||
data.returnType == function.returnType &&
|
||||
visitDeclaration(function, data)
|
||||
}
|
||||
|
||||
override fun visitForeignFunction(foreignFunction: SirForeignFunction, data: SirElement): Boolean {
|
||||
return data is SirForeignFunction &&
|
||||
areEqual(data.origin, foreignFunction.origin) &&
|
||||
visitDeclaration(foreignFunction, data)
|
||||
}
|
||||
}
|
||||
|
||||
private fun SirComparator.areEqual(lhs: List<SirElement>, rhs: List<SirElement>): Boolean {
|
||||
|
||||
@@ -7,14 +7,14 @@ package org.jetbrains.kotlin.sir.util
|
||||
|
||||
import org.jetbrains.kotlin.sir.*
|
||||
|
||||
val SirNativeCallable.allParameters: List<SirParameter>
|
||||
val SirCallable.allParameters: List<SirParameter>
|
||||
get() = when (this) {
|
||||
is SirFunction -> this.parameters
|
||||
is SirSetter -> listOf(SirParameter(parameterName = parameterName, type = this.valueType))
|
||||
is SirGetter -> listOf()
|
||||
}
|
||||
|
||||
val SirNativeCallable.returnType: SirType
|
||||
val SirCallable.returnType: SirType
|
||||
get() = when (this) {
|
||||
is SirFunction -> this.returnType
|
||||
is SirGetter -> this.valueType
|
||||
|
||||
@@ -15,53 +15,45 @@ object SirPrinter : SirVisitor<String, Unit>() {
|
||||
return "UNKNOWN<${SirElement::class.simpleName}>($element)"
|
||||
}
|
||||
|
||||
override fun visitModule(element: SirModule, data: Unit): String = render(
|
||||
element,
|
||||
override fun visitModule(module: SirModule, data: Unit): String = render(
|
||||
module,
|
||||
listOf(
|
||||
"name" to element.name
|
||||
"name" to module.name
|
||||
),
|
||||
element.declarations
|
||||
module.declarations
|
||||
)
|
||||
|
||||
override fun visitEnum(element: SirEnum, data: Unit): String = render(
|
||||
element,
|
||||
override fun visitEnum(enum: SirEnum, data: Unit): String = render(
|
||||
enum,
|
||||
listOf(
|
||||
"origin" to element.origin,
|
||||
"visibility" to element.visibility,
|
||||
"name" to element.name,
|
||||
"cases" to element.cases
|
||||
"origin" to enum.origin,
|
||||
"visibility" to enum.visibility,
|
||||
"name" to enum.name,
|
||||
"cases" to enum.cases
|
||||
),
|
||||
element.declarations
|
||||
enum.declarations
|
||||
)
|
||||
|
||||
override fun visitStruct(element: SirStruct, data: Unit): String = render(
|
||||
element,
|
||||
override fun visitStruct(struct: SirStruct, data: Unit): String = render(
|
||||
struct,
|
||||
listOf(
|
||||
"origin" to element.origin,
|
||||
"visibility" to element.visibility,
|
||||
"name" to element.name
|
||||
"origin" to struct.origin,
|
||||
"visibility" to struct.visibility,
|
||||
"name" to struct.name
|
||||
),
|
||||
element.declarations
|
||||
struct.declarations
|
||||
)
|
||||
|
||||
override fun visitFunction(element: SirFunction, data: Unit): String = render(
|
||||
element,
|
||||
override fun visitFunction(function: SirFunction, data: Unit): String = render(
|
||||
function,
|
||||
listOf(
|
||||
"origin" to element.origin,
|
||||
"visibility" to element.visibility,
|
||||
"name" to element.name,
|
||||
"parameters" to element.parameters,
|
||||
"returnType" to element.returnType,
|
||||
"origin" to function.origin,
|
||||
"visibility" to function.visibility,
|
||||
"name" to function.name,
|
||||
"parameters" to function.parameters,
|
||||
"returnType" to function.returnType,
|
||||
)
|
||||
)
|
||||
|
||||
override fun visitForeignFunction(element: SirForeignFunction, data: Unit): String = render(
|
||||
element,
|
||||
listOf(
|
||||
"origin" to element.origin,
|
||||
"visibility" to element.visibility,
|
||||
),
|
||||
)
|
||||
}
|
||||
|
||||
private fun render(
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.sir
|
||||
|
||||
import org.jetbrains.kotlin.sir.builder.buildEnum
|
||||
import org.jetbrains.kotlin.sir.constants.BYTE
|
||||
import org.jetbrains.kotlin.sir.mock.MockFunction
|
||||
import org.jetbrains.kotlin.sir.mock.MockKotlinType
|
||||
import org.jetbrains.kotlin.sir.mock.MockParameter
|
||||
import kotlin.test.Test
|
||||
import kotlin.test.assertTrue
|
||||
|
||||
class SirTest {
|
||||
|
||||
// TODO: Just a fake test to validate that everything is working. Feel free to delete.
|
||||
@Test
|
||||
fun exampleTest() {
|
||||
val fakeElement = produceSwiftElement()
|
||||
|
||||
println(fakeElement)
|
||||
assertTrue(fakeElement is SirElement)
|
||||
}
|
||||
|
||||
private fun produceSwiftElement(): Any {
|
||||
return buildEnum {
|
||||
origin = SirOrigin.Unknown
|
||||
name = "name"
|
||||
visibility = SirVisibility.PUBLIC
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.sir.mock
|
||||
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.sir.SirKotlinOrigin
|
||||
import org.jetbrains.kotlin.sir.SirOrigin
|
||||
|
||||
data class MockFunction(
|
||||
override val fqName: FqName,
|
||||
override val parameters: List<SirKotlinOrigin.Parameter>,
|
||||
override val returnType: SirKotlinOrigin.Type,
|
||||
override val documentation: SirKotlinOrigin.Documentation? = null,
|
||||
) : SirKotlinOrigin.Function
|
||||
|
||||
data class MockParameter(
|
||||
override val name: String,
|
||||
override val type: SirKotlinOrigin.Type,
|
||||
) : SirKotlinOrigin.Parameter
|
||||
|
||||
data class MockKotlinType(
|
||||
override val name: String
|
||||
) : SirKotlinOrigin.Type
|
||||
|
||||
data class MockDocumentation(override val content: String) : SirKotlinOrigin.Documentation
|
||||
+3
-30
@@ -42,12 +42,6 @@ object SwiftIrTree : AbstractSwiftIrTreeBuilder() {
|
||||
}
|
||||
}
|
||||
|
||||
val foreignDeclaration by sealedElement {
|
||||
parent(declaration)
|
||||
|
||||
visitorParameterName = "declaration"
|
||||
}
|
||||
|
||||
val named by sealedElement {
|
||||
+field("name", string)
|
||||
}
|
||||
@@ -78,15 +72,9 @@ object SwiftIrTree : AbstractSwiftIrTreeBuilder() {
|
||||
parent(declaration)
|
||||
}
|
||||
|
||||
// Denotes "actual" callable node. (I.e. SirCallable & !SIRForeignDeclaration)
|
||||
// TODO: remove along with foreign declaration (KT-65335); replace usages with just SIRCallable
|
||||
val nativeCallable by sealedElement {
|
||||
parent(callable)
|
||||
}
|
||||
|
||||
val function by element {
|
||||
customParentInVisitor = callable
|
||||
parent(nativeCallable)
|
||||
parent(callable)
|
||||
|
||||
+field("isStatic", boolean) // todo: KT-65046 Method|function distinction in SIR
|
||||
+field("name", string)
|
||||
@@ -97,17 +85,9 @@ object SwiftIrTree : AbstractSwiftIrTreeBuilder() {
|
||||
+field(name = "documentation", string, nullable = true, mutable = true)
|
||||
}
|
||||
|
||||
val foreignFunction by element {
|
||||
customParentInVisitor = callable
|
||||
parent(callable)
|
||||
parent(foreignDeclaration)
|
||||
|
||||
visitorParameterName = "function"
|
||||
}
|
||||
|
||||
val accessor by sealedElement {
|
||||
customParentInVisitor = callable
|
||||
parent(nativeCallable)
|
||||
parent(callable)
|
||||
|
||||
+field("body", functionBodyType, nullable = true, mutable = true)
|
||||
}
|
||||
@@ -119,7 +99,7 @@ object SwiftIrTree : AbstractSwiftIrTreeBuilder() {
|
||||
val setter by element {
|
||||
parent(accessor)
|
||||
|
||||
+field("parameterName", string, initializer = { })
|
||||
+field("parameterName", string, initializer = { })
|
||||
}
|
||||
|
||||
val variable by element {
|
||||
@@ -136,13 +116,6 @@ object SwiftIrTree : AbstractSwiftIrTreeBuilder() {
|
||||
+field("isStatic", boolean) // todo: KT-65046 Method|function distinction in SIR
|
||||
}
|
||||
|
||||
val foreignVariable by element {
|
||||
customParentInVisitor = declaration
|
||||
parent(foreignDeclaration)
|
||||
|
||||
visitorParameterName = "variable"
|
||||
}
|
||||
|
||||
val import by element {
|
||||
customParentInVisitor = declaration
|
||||
parent(declaration)
|
||||
|
||||
Reference in New Issue
Block a user