Merge "check-flagged-apis: add Symbol value class" into main
This commit is contained in:
commit
1dbe48454d
1 changed files with 37 additions and 0 deletions
|
@ -20,6 +20,43 @@ package com.android.checkflaggedapis
|
||||||
import com.github.ajalt.clikt.core.CliktCommand
|
import com.github.ajalt.clikt.core.CliktCommand
|
||||||
import com.github.ajalt.clikt.core.ProgramResult
|
import com.github.ajalt.clikt.core.ProgramResult
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class representing the fully qualified name of a class, method or field.
|
||||||
|
*
|
||||||
|
* This tool reads a multitude of input formats all of which represents the fully qualified path to
|
||||||
|
* a Java symbol slightly differently. To keep things consistent, all parsed APIs are converted to
|
||||||
|
* Symbols.
|
||||||
|
*
|
||||||
|
* All parts of the fully qualified name of the Symbol are separated by a dot, e.g.:
|
||||||
|
* <pre>
|
||||||
|
* package.class.inner-class.field
|
||||||
|
* </pre>
|
||||||
|
*/
|
||||||
|
@JvmInline
|
||||||
|
internal value class Symbol(val name: String) {
|
||||||
|
companion object {
|
||||||
|
private val FORBIDDEN_CHARS = listOf('/', '#', '$')
|
||||||
|
|
||||||
|
/** Create a new Symbol from a String that may include delimiters other than dot. */
|
||||||
|
fun create(name: String): Symbol {
|
||||||
|
var sanitizedName = name
|
||||||
|
for (ch in FORBIDDEN_CHARS) {
|
||||||
|
sanitizedName = sanitizedName.replace(ch, '.')
|
||||||
|
}
|
||||||
|
return Symbol(sanitizedName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
init {
|
||||||
|
require(!name.isEmpty()) { "empty string" }
|
||||||
|
for (ch in FORBIDDEN_CHARS) {
|
||||||
|
require(!name.contains(ch)) { "$name: contains $ch" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun toString(): String = name.toString()
|
||||||
|
}
|
||||||
|
|
||||||
class CheckCommand : CliktCommand() {
|
class CheckCommand : CliktCommand() {
|
||||||
override fun run() {
|
override fun run() {
|
||||||
println("hello world")
|
println("hello world")
|
||||||
|
|
Loading…
Reference in a new issue