FIR: implement Java fields (in provider, type enhancement, scopes)

Related to KT-29218
This commit is contained in:
Mikhail Glukhikh
2019-02-27 18:15:51 +03:00
parent 4255c9f774
commit e7ac88d326
24 changed files with 274 additions and 27 deletions
@@ -0,0 +1,23 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. 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.fir.declarations
import org.jetbrains.kotlin.fir.BaseTransformedType
import org.jetbrains.kotlin.fir.VisitedSupertype
import org.jetbrains.kotlin.fir.expressions.FirVariable
import org.jetbrains.kotlin.fir.visitors.FirVisitor
@BaseTransformedType
interface FirField : @VisitedSupertype FirDeclaration, FirCallableMember, FirVariable {
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
visitor.visitField(this, data)
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
super<FirCallableMember>.acceptChildren(visitor, data)
initializer?.accept(visitor, data)
delegate?.accept(visitor, data)
}
}
@@ -0,0 +1,8 @@
/*
* Copyright 2010-2019 JetBrains s.r.o. 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.fir.symbols.impl
typealias FirFieldSymbol = FirPropertySymbol
@@ -64,6 +64,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformDeclaration(errorDeclaration, data)
}
open fun transformField(field: FirField, data: D): CompositeTransformResult<FirDeclaration> {
return transformDeclaration(field, data)
}
open fun transformNamedDeclaration(namedDeclaration: FirNamedDeclaration, data: D): CompositeTransformResult<FirDeclaration> {
return transformDeclaration(namedDeclaration, data)
}
@@ -496,6 +500,10 @@ abstract class FirTransformer<in D> : FirVisitor<CompositeTransformResult<FirEle
return transformExpression(expression, data)
}
final override fun visitField(field: FirField, data: D): CompositeTransformResult<FirElement> {
return transformField(field, data)
}
final override fun visitFile(file: FirFile, data: D): CompositeTransformResult<FirElement> {
return transformFile(file, data)
}
@@ -64,6 +64,10 @@ abstract class FirVisitor<out R, in D> {
return visitDeclaration(errorDeclaration, data)
}
open fun visitField(field: FirField, data: D): R {
return visitDeclaration(field, data)
}
open fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration, data: D): R {
return visitDeclaration(namedDeclaration, data)
}
@@ -64,6 +64,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitDeclaration(errorDeclaration, null)
}
open fun visitField(field: FirField) {
visitDeclaration(field, null)
}
open fun visitNamedDeclaration(namedDeclaration: FirNamedDeclaration) {
visitDeclaration(namedDeclaration, null)
}
@@ -496,6 +500,10 @@ abstract class FirVisitorVoid : FirVisitor<Unit, Nothing?>() {
visitExpression(expression)
}
final override fun visitField(field: FirField, data: Nothing?) {
visitField(field)
}
final override fun visitFile(file: FirFile, data: Nothing?) {
visitFile(file)
}