PY-76830 PY-76833 PY-76843 PY-76879 Enums support

GitOrigin-RevId: 9021c003cde70c39f8a5635b42761c08049490e2
This commit is contained in:
Petr
2024-11-13 18:30:03 +00:00
committed by intellij-monorepo-bot
parent 71de217118
commit 16d40e9c5d
29 changed files with 697 additions and 65 deletions
@@ -0,0 +1,43 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.jetbrains.python.psi.stubs
import com.intellij.psi.stubs.StubInputStream
import com.intellij.psi.stubs.StubOutputStream
import com.jetbrains.python.psi.*
import org.jetbrains.annotations.ApiStatus
import java.io.IOException
import java.util.*
@ApiStatus.Internal
enum class PyLiteralKind {
INT,
FLOAT,
STRING,
BOOL,
NONE;
companion object {
@JvmStatic
fun fromExpression(expression: PyExpression?): PyLiteralKind? = when (expression) {
is PyNumericLiteralExpression -> if (expression.isIntegerLiteral) INT else FLOAT
is PyStringLiteralExpression -> STRING
is PyBoolLiteralExpression -> BOOL
is PyNoneLiteralExpression -> NONE
else -> null
}
@JvmStatic
@Throws(IOException::class)
fun serialize(stream: StubOutputStream, kind: PyLiteralKind?) {
val index = kind?.ordinal ?: -1
stream.writeVarInt(index)
}
@JvmStatic
@Throws(IOException::class)
fun deserialize(stream: StubInputStream): PyLiteralKind? {
val index = stream.readVarInt()
return if (index == -1) null else entries[index]
}
}
}
@@ -3,7 +3,7 @@ package com.jetbrains.python.psi.stubs;
import com.intellij.psi.stubs.NamedStub;
import com.intellij.psi.util.QualifiedName;
import com.jetbrains.python.psi.PyTargetExpression;
import com.jetbrains.python.psi.*;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
@@ -41,6 +41,10 @@ public interface PyTargetExpressionStub
@Nullable
QualifiedName getInitializer();
@ApiStatus.Internal
@Nullable
PyLiteralKind getAssignedLiteralKind();
boolean isQualified();
@ApiStatus.Internal