[K/JS] Add ability to exclude declarations from export by a new annotation @JsExport.Ignore.
This commit is contained in:
@@ -789,7 +789,6 @@ public interface Errors {
|
||||
DiagnosticFactory0<KtNamedDeclaration> ACTUAL_MISSING = DiagnosticFactory0.create(ERROR, ACTUAL_DECLARATION_NAME);
|
||||
|
||||
DiagnosticFactory0<PsiElement> OPTIONAL_EXPECTATION_NOT_ON_EXPECTED = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> NESTED_OPTIONAL_EXPECTATION = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> OPTIONAL_DECLARATION_OUTSIDE_OF_ANNOTATION_ENTRY = DiagnosticFactory0.create(ERROR);
|
||||
DiagnosticFactory0<PsiElement> OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE = DiagnosticFactory0.create(ERROR);
|
||||
|
||||
|
||||
-1
@@ -333,7 +333,6 @@ public class DefaultErrorMessages {
|
||||
MAP.put(ACTUAL_MISSING, "Declaration must be marked with 'actual'");
|
||||
|
||||
MAP.put(OPTIONAL_EXPECTATION_NOT_ON_EXPECTED, "'@OptionalExpectation' can only be used on an expected annotation class");
|
||||
MAP.put(NESTED_OPTIONAL_EXPECTATION, "'@OptionalExpectation' cannot be used on a nested class");
|
||||
MAP.put(OPTIONAL_DECLARATION_OUTSIDE_OF_ANNOTATION_ENTRY, "Declaration annotated with '@OptionalExpectation' can only be used inside an annotation entry");
|
||||
MAP.put(OPTIONAL_DECLARATION_USAGE_IN_NON_COMMON_SOURCE, "Declaration annotated with '@OptionalExpectation' can only be used in common module sources");
|
||||
|
||||
|
||||
+1
-10
@@ -7,25 +7,16 @@ package org.jetbrains.kotlin.resolve.checkers
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.MemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.multiplatform.OptionalAnnotationUtil
|
||||
|
||||
object OptionalExpectationChecker {
|
||||
fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, trace: BindingTrace) {
|
||||
val isExpect = descriptor is MemberDescriptor && descriptor.isExpect
|
||||
if (isExpect) {
|
||||
if (DescriptorUtils.isAnnotationClass(descriptor) && descriptor.containingDeclaration !is PackageFragmentDescriptor) {
|
||||
getOptionalExpectationEntry(declaration, trace)?.let {
|
||||
trace.report(Errors.NESTED_OPTIONAL_EXPECTATION.on(it))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (descriptor !is MemberDescriptor || !descriptor.isExpect) {
|
||||
getOptionalExpectationEntry(declaration, trace)?.let {
|
||||
trace.report(Errors.OPTIONAL_EXPECTATION_NOT_ON_EXPECTED.on(it))
|
||||
}
|
||||
|
||||
@@ -12,9 +12,11 @@ internal fun PsiElement.isUsageAsAnnotationOrImport(): Boolean {
|
||||
val parent = parent
|
||||
|
||||
if (parent is KtUserType) {
|
||||
return parent.parent is KtTypeReference &&
|
||||
parent.parent.parent is KtConstructorCalleeExpression &&
|
||||
parent.parent.parent.parent is KtAnnotationEntry
|
||||
return (parent.parent is KtUserType && parent.isUsageAsAnnotationOrImport()) || (
|
||||
parent.parent is KtTypeReference &&
|
||||
parent.parent.parent is KtConstructorCalleeExpression &&
|
||||
parent.parent.parent.parent is KtAnnotationEntry
|
||||
)
|
||||
}
|
||||
|
||||
return parent is KtDotQualifiedExpression && parent.parent is KtImportDirective
|
||||
|
||||
Reference in New Issue
Block a user