<!WHATEVER!> Kotlin 中的语法? (尖括号包裹感叹号)
<!WHATVER!> syntax in Kotlin? (Angle brackets wrapping exclamation points)
我在 Kotlin 编译器测试套件中看到了这个我不熟悉的语法。
// !DIAGNOSTICS: +UNUSED_LAMBDA_EXPRESSION, +UNUSED_VARIABLE
fun unusedLiteral(){
<!UNUSED_LAMBDA_EXPRESSION!>{ ->
val <!UNUSED_VARIABLE!>i<!> = 1
}<!>
}
<!UNUSED_LAMBDA_EXPRESSION!>
...<!>
是什么意思?
术语 UNUSED_LAMBDA_EXPRESSION
在 Errors.kt 中声明为:
DiagnosticFactory0<KtLambdaExpression> UNUSED_LAMBDA_EXPRESSION = DiagnosticFactory0.create(WARNING);
此语法在 Kotlin 中无效。它仅用于 Kotlin 测试管道的测试数据文件。也就是说,只有测试运行器可以识别这种语法,Kotlin 编译器无法识别。具体来说,<!DIAGNOSTIC_NAME!>foo<!>
语法表示一个 处理程序 。处理程序对事物进行检查,或将信息输出到文件。在这种情况下,此语法检查文件中的那个点是否确实发出了指定的诊断。
另请注意,顶部的 // !DIAGNOSTICS
评论不仅仅是评论。它表示一个指令。指令就像 运行 测试的选项。
我强烈建议您也阅读 compiler/testData/diagnostics/ReadMe.md, which explains how diagnostic tests work specifically, and if you're really interested in this stuff, check out compiler/test-infrastructure/ReadMe.md,它告诉您整个测试管道的一般工作原理。
我在 Kotlin 编译器测试套件中看到了这个我不熟悉的语法。
// !DIAGNOSTICS: +UNUSED_LAMBDA_EXPRESSION, +UNUSED_VARIABLE
fun unusedLiteral(){
<!UNUSED_LAMBDA_EXPRESSION!>{ ->
val <!UNUSED_VARIABLE!>i<!> = 1
}<!>
}
<!UNUSED_LAMBDA_EXPRESSION!>
...<!>
是什么意思?
术语 UNUSED_LAMBDA_EXPRESSION
在 Errors.kt 中声明为:
DiagnosticFactory0<KtLambdaExpression> UNUSED_LAMBDA_EXPRESSION = DiagnosticFactory0.create(WARNING);
此语法在 Kotlin 中无效。它仅用于 Kotlin 测试管道的测试数据文件。也就是说,只有测试运行器可以识别这种语法,Kotlin 编译器无法识别。具体来说,<!DIAGNOSTIC_NAME!>foo<!>
语法表示一个 处理程序 。处理程序对事物进行检查,或将信息输出到文件。在这种情况下,此语法检查文件中的那个点是否确实发出了指定的诊断。
另请注意,顶部的 // !DIAGNOSTICS
评论不仅仅是评论。它表示一个指令。指令就像 运行 测试的选项。
我强烈建议您也阅读 compiler/testData/diagnostics/ReadMe.md, which explains how diagnostic tests work specifically, and if you're really interested in this stuff, check out compiler/test-infrastructure/ReadMe.md,它告诉您整个测试管道的一般工作原理。