diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 68307ad56..05b67ce03 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -27,7 +27,7 @@ jobs: strategy: fail-fast: false matrix: - kotlin: [ '1.6.0', '1.6.10' ] + kotlin: [ '1.6.0', '1.6.10', '1.6.20' ] jvm_target: [ '1.8', '11', '15' ] outputs: @@ -145,4 +145,4 @@ jobs: # Waiting for AWS configuration to active this part: # aws s3 sync docs/build s3://$S3_BUCKET/$MAYOR_MINOR_VERSION aws s3 sync --delete docs/build s3://$S3_BUCKET/docs/meta - aws cloudfront create-invalidation --distribution-id $AWS_CLOUDFRONT_ID --paths "/*" \ No newline at end of file + aws cloudfront create-invalidation --distribution-id $AWS_CLOUDFRONT_ID --paths "/*" diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index d982b1c50..b3240effe 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -15,7 +15,7 @@ jobs: strategy: fail-fast: false matrix: - kotlin: [ '1.6.0', '1.6.10' ] + kotlin: [ '1.6.0', '1.6.10', '1.6.20' ] jvm_target: [ '1.8', '11', '15' ] steps: @@ -80,4 +80,4 @@ jobs: run: | sudo gem install bundler bundle install --gemfile docs/Gemfile --path vendor/bundle - BUNDLE_GEMFILE=docs/Gemfile bundle exec jekyll build -b /docs/meta -s docs/docs -d docs/build \ No newline at end of file + BUNDLE_GEMFILE=docs/Gemfile bundle exec jekyll build -b /docs/meta -s docs/docs -d docs/build diff --git a/gradle/projects.libs.versions.toml b/gradle/projects.libs.versions.toml index fc950ea1a..a93c3a50a 100644 --- a/gradle/projects.libs.versions.toml +++ b/gradle/projects.libs.versions.toml @@ -9,10 +9,10 @@ intellijOpenApi = "7.0.3" javaAssist = "3.28.0-GA" junit = "5.8.2" junitLauncher = "1.8.2" -kotlin = "1.6.0" +kotlin = "1.6.20" kotest = "3.4.2" javaSmt = "3.12.0" -kotlinCompileTesting = "1.4.7" +kotlinCompileTesting = "1.4.8" javaCompileTesting = "0.19" apacheCommonsText = "1.9" sarif4k = "0.0.1" @@ -59,4 +59,4 @@ arrowGradleConfig-nexus = { id = "io.arrow-kt.arrow-gradle-config-nexus", versio arrowGradleConfig-publish = { id = "io.arrow-kt.arrow-gradle-config-publish", version.ref = "arrowGradleConfig" } arrowGradleConfig-versioning = { id = "io.arrow-kt.arrow-gradle-config-versioning", version.ref = "arrowGradleConfig" } kotlin-binaryCompatibilityValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "kotlinBinaryCompatibilityValidator" } -detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } \ No newline at end of file +detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } diff --git a/libs/arrow-meta/api/arrow-meta.api b/libs/arrow-meta/api/arrow-meta.api index c12e3b5c4..a8d2702f6 100644 --- a/libs/arrow-meta/api/arrow-meta.api +++ b/libs/arrow-meta/api/arrow-meta.api @@ -793,16 +793,6 @@ public abstract interface class arrow/meta/phases/analysis/PreprocessedVirtualFi public abstract fun isPassThrough (Larrow/meta/phases/CompilerContext;)Z } -public final class arrow/meta/phases/analysis/diagnostic/PositionStrategiesKt { - public static final field onIdentifyingElement Lorg/jetbrains/kotlin/diagnostics/PositioningStrategy; - public static final field onNavigationElement Lorg/jetbrains/kotlin/diagnostics/PositioningStrategy; - public static final field onPublishedInternalOrphan Lorg/jetbrains/kotlin/diagnostics/PositioningStrategy; - public static final fun onPublishedApi (Lorg/jetbrains/kotlin/psi/KtDeclaration;Lorg/jetbrains/kotlin/resolve/BindingContext;)Lkotlin/Pair; - public static final fun position (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/diagnostics/PositioningStrategy; - public static synthetic fun position$default (Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Lorg/jetbrains/kotlin/diagnostics/PositioningStrategy; - public static final fun publishedApiAnnotation (Lorg/jetbrains/kotlin/psi/KtDeclaration;)Lorg/jetbrains/kotlin/psi/KtAnnotationEntry; -} - public abstract interface class arrow/meta/phases/codegen/asm/ClassBuilder : arrow/meta/phases/ExtensionPhase { public abstract fun interceptClassBuilder (Larrow/meta/phases/CompilerContext;Lorg/jetbrains/kotlin/codegen/ClassBuilderFactory;Lorg/jetbrains/kotlin/resolve/BindingContext;Lorg/jetbrains/kotlin/diagnostics/DiagnosticSink;)Lorg/jetbrains/kotlin/codegen/ClassBuilderFactory; } @@ -912,6 +902,7 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public final fun irCall (Lorg/jetbrains/kotlin/descriptors/CallableDescriptor;)Lorg/jetbrains/kotlin/ir/expressions/IrExpression; public final fun irConstructorCall (Lorg/jetbrains/kotlin/descriptors/ClassDescriptor;)Lorg/jetbrains/kotlin/ir/expressions/IrConstructorCall; public final fun irGetterCall (Lorg/jetbrains/kotlin/descriptors/PropertyDescriptor;)Lorg/jetbrains/kotlin/ir/expressions/IrCall; + public fun isAnonymous (Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker;)Z public fun isAnyConstructor (Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker;)Z public fun isArrayOrNullableArray (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Z public fun isCapturedDynamic (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Z @@ -938,6 +929,7 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public fun isLocalType (Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker;)Z public fun isMarkedNullable (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Z public fun isMarkedNullable (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)Z + public fun isNotNullTypeParameter (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Z public fun isNothing (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Z public fun isNothingConstructor (Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker;)Z public fun isNullableAny (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Z @@ -990,6 +982,7 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public fun referenceProperty (Lorg/jetbrains/kotlin/descriptors/PropertyDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrPropertySymbol; public fun referenceProperty (Lorg/jetbrains/kotlin/descriptors/PropertyDescriptor;Lkotlin/jvm/functions/Function0;)Lorg/jetbrains/kotlin/ir/declarations/IrProperty; public fun referencePropertyFromLinker (Lorg/jetbrains/kotlin/ir/util/IdSignature;)Lorg/jetbrains/kotlin/ir/symbols/IrPropertySymbol; + public fun referenceScopedTypeParameter (Lorg/jetbrains/kotlin/descriptors/TypeParameterDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrTypeParameterSymbol; public fun referenceScript (Lorg/jetbrains/kotlin/descriptors/ScriptDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrScriptSymbol; public fun referenceSimpleFunction (Lorg/jetbrains/kotlin/descriptors/FunctionDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol; public fun referenceSimpleFunctionFromLinker (Lorg/jetbrains/kotlin/ir/util/IdSignature;)Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol; @@ -998,6 +991,7 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public fun referenceTypeParameter (Lorg/jetbrains/kotlin/descriptors/TypeParameterDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrTypeParameterSymbol; public fun referenceValueParameter (Lorg/jetbrains/kotlin/descriptors/ParameterDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrValueParameterSymbol; public fun referenceVariable (Lorg/jetbrains/kotlin/descriptors/VariableDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrVariableSymbol; + public fun replaceType (Lorg/jetbrains/kotlin/types/model/TypeArgumentMarker;Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Lorg/jetbrains/kotlin/types/model/TypeArgumentMarker; public fun size (Lorg/jetbrains/kotlin/types/model/TypeArgumentListMarker;)I public final fun substitutedIrTypes (Lorg/jetbrains/kotlin/descriptors/CallableDescriptor;Lorg/jetbrains/kotlin/resolve/calls/inference/components/NewTypeSubstitutorByConstructorMap;)Ljava/util/List; public fun substitutionSupertypePolicy (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)Lorg/jetbrains/kotlin/types/TypeCheckerState$SupertypesPolicy; @@ -1012,6 +1006,7 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public fun typeDepth (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)I public fun typeDepth (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)I public fun unlistFunction (Lorg/jetbrains/kotlin/ir/declarations/IrFunction;)V + public fun unwrapStubTypeVariableConstructor (Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker;)Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker; public fun upperBound (Lorg/jetbrains/kotlin/types/model/FlexibleTypeMarker;)Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker; public fun upperBoundCount (Lorg/jetbrains/kotlin/types/model/TypeParameterMarker;)I public fun upperBoundIfFlexible (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker; diff --git a/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/analysis/diagnostic/PositionStrategies.kt b/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/analysis/diagnostic/PositionStrategies.kt deleted file mode 100644 index 3653aaa15..000000000 --- a/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/analysis/diagnostic/PositionStrategies.kt +++ /dev/null @@ -1,58 +0,0 @@ -package arrow.meta.phases.analysis.diagnostic - -import org.jetbrains.kotlin.builtins.StandardNames -import org.jetbrains.kotlin.com.intellij.openapi.util.TextRange -import org.jetbrains.kotlin.com.intellij.psi.PsiElement -import org.jetbrains.kotlin.diagnostics.ParametrizedDiagnostic -import org.jetbrains.kotlin.diagnostics.PositioningStrategy -import org.jetbrains.kotlin.diagnostics.hasSyntaxErrors -import org.jetbrains.kotlin.diagnostics.markElement -import org.jetbrains.kotlin.psi.KtAnnotationEntry -import org.jetbrains.kotlin.psi.KtDeclaration -import org.jetbrains.kotlin.psi.KtObjectDeclaration -import org.jetbrains.kotlin.psi.psiUtil.textRangeWithoutComments -import org.jetbrains.kotlin.resolve.BindingContext - -/** - * Each [element] that is a witness of this strategy has an attribute that allows internal orphans - * to be published publicly. e.g.: [PublishedApi] annotation - */ -@JvmField -val onPublishedInternalOrphan: PositioningStrategy = - position(mark = { listOf(it.publishedApiAnnotation()?.textRange ?: it.textRange) }) - -@JvmField -val onNavigationElement: PositioningStrategy = - position(mark = { listOf(it.navigationElement?.textRange ?: it.textRange) }) - -@JvmField -val onIdentifyingElement: PositioningStrategy = - position(mark = { listOf(it.identifyingElement?.textRange ?: it.textRange) }) - -/** - * matching on the shortName is valid, as the diagnostic is only applied, if the FqName correlates. - * Which is checked prior to the Diagnostic being applied. - */ -fun KtDeclaration.publishedApiAnnotation(): KtAnnotationEntry? = - annotationEntries.firstOrNull { it.shortName == StandardNames.FqNames.publishedApi.shortName() } - -fun KtDeclaration.onPublishedApi(ctx: BindingContext): Pair? = - annotationEntries - .firstOrNull { - ctx.get(BindingContext.ANNOTATION, it)?.fqName == StandardNames.FqNames.publishedApi - } - ?.let { it to it.textRangeWithoutComments } - -fun position( - mark: (A) -> List = { markElement(it) }, - isValid: (A) -> Boolean = { !hasSyntaxErrors(it) }, - markDiagnostic: (ParametrizedDiagnostic) -> List = { mark(it.psiElement) } -): PositioningStrategy = - object : PositioningStrategy() { - override fun mark(element: A): List = mark(element) - - override fun isValid(element: A): Boolean = isValid(element) - - override fun markDiagnostic(diagnostic: ParametrizedDiagnostic): List = - markDiagnostic(diagnostic) - }