Support watchos and tvos in cinterop definitions
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -23,34 +23,15 @@ public class NativeDefinitionsParser implements PsiParser, LightPsiParser {
|
||||
boolean r;
|
||||
b = adapt_builder_(t, b, this, null);
|
||||
Marker m = enter_section_(b, 0, _COLLAPSE_, null);
|
||||
if (t == BOOL_KEY) {
|
||||
r = boolKey(b, 0);
|
||||
}
|
||||
else if (t == BOOL_VALUE) {
|
||||
r = boolValue(b, 0);
|
||||
}
|
||||
else if (t == CODE) {
|
||||
r = code(b, 0);
|
||||
}
|
||||
else if (t == STRING_KEY) {
|
||||
r = stringKey(b, 0);
|
||||
}
|
||||
else if (t == STRING_VALUE) {
|
||||
r = stringValue(b, 0);
|
||||
}
|
||||
else if (t == STRINGS_KEY) {
|
||||
r = stringsKey(b, 0);
|
||||
}
|
||||
else if (t == STRINGS_VALUE) {
|
||||
r = stringsValue(b, 0);
|
||||
}
|
||||
else {
|
||||
r = parse_root_(t, b, 0);
|
||||
}
|
||||
r = parse_root_(t, b);
|
||||
exit_section_(b, 0, m, t, r, true, TRUE_CONDITION);
|
||||
}
|
||||
|
||||
protected boolean parse_root_(IElementType t, PsiBuilder b, int l) {
|
||||
protected boolean parse_root_(IElementType t, PsiBuilder b) {
|
||||
return parse_root_(t, b, 0);
|
||||
}
|
||||
|
||||
static boolean parse_root_(IElementType t, PsiBuilder b, int l) {
|
||||
return root(b, l + 1);
|
||||
}
|
||||
|
||||
@@ -204,10 +185,12 @@ public class NativeDefinitionsParser implements PsiParser, LightPsiParser {
|
||||
// ANDROID | ANDROID_ARM32 | ANDROID_ARM64 | ARM32 | ARM64 | IOS | IOS_ARM32
|
||||
// | IOS_ARM64 | IOS_X64 | LINUX | LINUX_ARM32_HFP | LINUX_MIPS32
|
||||
// | LINUX_MIPSEL32 | LINUX_X64 | MACOS_X64 | MINGW | MINGW_X64 | MIPS32
|
||||
// | MIPSEL32 | OSX | WASM | WASM32 | X64 | UNKNOWN_PLATFORM
|
||||
// | MIPSEL32 | OSX | TVOS | TVOS_ARM64 | TVOS_X64 | WASM | WASM32 | WATCHOS |
|
||||
// | WATCHOS_ARM32 | WATCHOS_ARM64 | WATCHOS_X64 | WATCHOS_X86 | X64 | UNKNOWN_PLATFORM
|
||||
static boolean platform_(PsiBuilder b, int l) {
|
||||
if (!recursion_guard_(b, l, "platform_")) return false;
|
||||
boolean r;
|
||||
Marker m = enter_section_(b);
|
||||
r = consumeToken(b, ANDROID);
|
||||
if (!r) r = consumeToken(b, ANDROID_ARM32);
|
||||
if (!r) r = consumeToken(b, ANDROID_ARM64);
|
||||
@@ -228,10 +211,20 @@ public class NativeDefinitionsParser implements PsiParser, LightPsiParser {
|
||||
if (!r) r = consumeToken(b, MIPS32);
|
||||
if (!r) r = consumeToken(b, MIPSEL32);
|
||||
if (!r) r = consumeToken(b, OSX);
|
||||
if (!r) r = consumeToken(b, TVOS);
|
||||
if (!r) r = consumeToken(b, TVOS_ARM64);
|
||||
if (!r) r = consumeToken(b, TVOS_X64);
|
||||
if (!r) r = consumeToken(b, WASM);
|
||||
if (!r) r = consumeToken(b, WASM32);
|
||||
if (!r) r = consumeToken(b, WATCHOS);
|
||||
if (!r) r = consumeToken(b, PLATFORM__26_0);
|
||||
if (!r) r = consumeToken(b, WATCHOS_ARM32);
|
||||
if (!r) r = consumeToken(b, WATCHOS_ARM64);
|
||||
if (!r) r = consumeToken(b, WATCHOS_X64);
|
||||
if (!r) r = consumeToken(b, WATCHOS_X86);
|
||||
if (!r) r = consumeToken(b, X64);
|
||||
if (!r) r = consumeToken(b, UNKNOWN_PLATFORM);
|
||||
exit_section_(b, m, null, r);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
@@ -57,14 +57,23 @@ public interface NativeDefinitionsTypes {
|
||||
IElementType NO_STRING_CONVERSION = new NativeDefinitionsTokenType("noStringConversion");
|
||||
IElementType OSX = new NativeDefinitionsTokenType("osx");
|
||||
IElementType PACKAGE = new NativeDefinitionsTokenType("package");
|
||||
IElementType PLATFORM__26_0 = new NativeDefinitionsTokenType("platform__26_0");
|
||||
IElementType SEPARATOR = new NativeDefinitionsTokenType("SEPARATOR");
|
||||
IElementType STATIC_LIBRARIES = new NativeDefinitionsTokenType("staticLibraries");
|
||||
IElementType STRICT_ENUMS = new NativeDefinitionsTokenType("strictEnums");
|
||||
IElementType TVOS = new NativeDefinitionsTokenType("TVOS");
|
||||
IElementType TVOS_ARM64 = new NativeDefinitionsTokenType("TVOS_ARM64");
|
||||
IElementType TVOS_X64 = new NativeDefinitionsTokenType("TVOS_X64");
|
||||
IElementType UNKNOWN_KEY = new NativeDefinitionsTokenType("<unknown key>");
|
||||
IElementType UNKNOWN_PLATFORM = new NativeDefinitionsTokenType("<unknown platform>");
|
||||
IElementType VALUE = new NativeDefinitionsTokenType("VALUE");
|
||||
IElementType WASM = new NativeDefinitionsTokenType("wasm");
|
||||
IElementType WASM32 = new NativeDefinitionsTokenType("wasm32");
|
||||
IElementType WATCHOS = new NativeDefinitionsTokenType("WATCHOS");
|
||||
IElementType WATCHOS_ARM32 = new NativeDefinitionsTokenType("WATCHOS_ARM32");
|
||||
IElementType WATCHOS_ARM64 = new NativeDefinitionsTokenType("WATCHOS_ARM64");
|
||||
IElementType WATCHOS_X64 = new NativeDefinitionsTokenType("WATCHOS_X64");
|
||||
IElementType WATCHOS_X86 = new NativeDefinitionsTokenType("WATCHOS_X86");
|
||||
IElementType X64 = new NativeDefinitionsTokenType("x64");
|
||||
|
||||
class Factory {
|
||||
|
||||
@@ -92,6 +92,7 @@ private incorrectDefinition_ ::= UNKNOWN_KEY? UNKNOWN_PLATFORM? SEPARATOR VALUE?
|
||||
private platform_ ::= ANDROID | ANDROID_ARM32 | ANDROID_ARM64 | ARM32 | ARM64 | IOS | IOS_ARM32
|
||||
| IOS_ARM64 | IOS_X64 | LINUX | LINUX_ARM32_HFP | LINUX_MIPS32
|
||||
| LINUX_MIPSEL32 | LINUX_X64 | MACOS_X64 | MINGW | MINGW_X64 | MIPS32
|
||||
| MIPSEL32 | OSX | WASM | WASM32 | X64 | UNKNOWN_PLATFORM
|
||||
| MIPSEL32 | OSX | TVOS | TVOS_ARM64 | TVOS_X64 | WASM | WASM32 | WATCHOS |
|
||||
| WATCHOS_ARM32 | WATCHOS_ARM64 | WATCHOS_X64 | WATCHOS_X86 | X64 | UNKNOWN_PLATFORM
|
||||
|
||||
code ::= CODE_CHARS
|
||||
@@ -70,8 +70,16 @@ MINGW_X64="mingw_x64"
|
||||
MIPS32="mips32"
|
||||
MIPSEL32="mipsel32"
|
||||
OSX="osx"
|
||||
TVOS="tvos"
|
||||
TVOS_ARM64="tvos_arm64"
|
||||
TVOS_X64="tvos_x64"
|
||||
WASM="wasm"
|
||||
WASM32="wasm32"
|
||||
WATCHOS="watchos"
|
||||
WATCHOS_ARM32="watchos_arm32"
|
||||
WATCHOS_ARM64="watchos_arm64"
|
||||
WATCHOS_X64="watchos_x64"
|
||||
WATCHOS_X86="watchos_x86"
|
||||
X64="x64"
|
||||
|
||||
|
||||
@@ -131,8 +139,16 @@ X64="x64"
|
||||
[.]{MIPS32} { return MIPS32; }
|
||||
[.]{MIPSEL32} { return MIPSEL32; }
|
||||
[.]{OSX} { return OSX; }
|
||||
[.]{TVOS} { return TVOS; }
|
||||
[.]{TVOS_ARM64} { return TVOS_ARM64; }
|
||||
[.]{TVOS_X64} { return TVOS_X64; }
|
||||
[.]{WASM} { return WASM; }
|
||||
[.]{WASM32} { return WASM32; }
|
||||
[.]{WATCHOS} { return WATCHOS; }
|
||||
[.]{WATCHOS_ARM32} { return WATCHOS_ARM32; }
|
||||
[.]{WATCHOS_ARM64} { return WATCHOS_ARM64; }
|
||||
[.]{WATCHOS_X64} { return WATCHOS_X64; }
|
||||
[.]{WATCHOS_X86} { return WATCHOS_X86; }
|
||||
[.]{X64} { return X64; }
|
||||
[.]{PLATFORM_CHAR}+ { return UNKNOWN_PLATFORM; }
|
||||
{SEPARATOR} { yybegin(WAITING_VALUE); return SEPARATOR; }
|
||||
|
||||
@@ -144,8 +144,16 @@ object NativeDefinitionsSyntaxHighlighter : SyntaxHighlighterBase() {
|
||||
NativeDefinitionsTypes.MIPS32 -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.MIPSEL32 -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.OSX -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.TVOS -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.TVOS_ARM64 -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.TVOS_X64 -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.WASM -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.WASM32 -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.WATCHOS -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.WATCHOS_ARM32 -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.WATCHOS_ARM64 -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.WATCHOS_X64 -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.WATCHOS_X86 -> KNOWN_EXTENSIONS_KEYS
|
||||
NativeDefinitionsTypes.X64 -> KNOWN_EXTENSIONS_KEYS
|
||||
else -> EMPTY_KEYS
|
||||
}
|
||||
|
||||
@@ -25,12 +25,14 @@ linker=clang
|
||||
linkerOpts = -DBAR=bar -DBAZ=baz
|
||||
linkerOpts.linux_mipsel32 = -fpic
|
||||
entryPoint = main1 main2
|
||||
entryPoint.tvos_x64 = main3
|
||||
|
||||
nonStrictEnums.wasm32 = non strict
|
||||
noStringConversion.linux_arm32_hfp = no string
|
||||
strictEnums.android_arm64 = strict enums
|
||||
|
||||
modules.osx = baba
|
||||
modules.watchos_arm64 = deda
|
||||
|
||||
---
|
||||
|
||||
|
||||
+56
-38
@@ -1,4 +1,4 @@
|
||||
Definitions file for Kotlin/Native C interop(0,1420)
|
||||
Definitions file for Kotlin/Native C interop(0,1477)
|
||||
PsiComment(NativeDefinitionsTokenType.COMMENT)('# In this test case all supported properties are used.')(0,54)
|
||||
PsiWhiteSpace('\n')(54,55)
|
||||
NativeDefinitionsStringKeyImpl(STRING_KEY)(55,62)
|
||||
@@ -171,43 +171,61 @@ Definitions file for Kotlin/Native C interop(0,1420)
|
||||
PsiWhiteSpace(' ')(821,822)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(822,833)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('main1 main2')(822,833)
|
||||
PsiWhiteSpace('\n\n')(833,835)
|
||||
NativeDefinitionsStringsKeyImpl(STRINGS_KEY)(835,849)
|
||||
PsiElement(NativeDefinitionsTokenType.nonStrictEnums)('nonStrictEnums')(835,849)
|
||||
PsiElement(NativeDefinitionsTokenType.wasm32)('.wasm32')(849,856)
|
||||
PsiWhiteSpace(' ')(856,857)
|
||||
PsiElement(NativeDefinitionsTokenType.SEPARATOR)('=')(857,858)
|
||||
PsiWhiteSpace(' ')(858,859)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(859,869)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('non strict')(859,869)
|
||||
PsiWhiteSpace('\n')(869,870)
|
||||
NativeDefinitionsStringsKeyImpl(STRINGS_KEY)(870,888)
|
||||
PsiElement(NativeDefinitionsTokenType.noStringConversion)('noStringConversion')(870,888)
|
||||
PsiElement(NativeDefinitionsTokenType.linux_arm32_hfp)('.linux_arm32_hfp')(888,904)
|
||||
PsiWhiteSpace(' ')(904,905)
|
||||
PsiElement(NativeDefinitionsTokenType.SEPARATOR)('=')(905,906)
|
||||
PsiWhiteSpace(' ')(906,907)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(907,916)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('no string')(907,916)
|
||||
PsiWhiteSpace('\n')(916,917)
|
||||
NativeDefinitionsStringsKeyImpl(STRINGS_KEY)(917,928)
|
||||
PsiElement(NativeDefinitionsTokenType.strictEnums)('strictEnums')(917,928)
|
||||
PsiElement(NativeDefinitionsTokenType.android_arm64)('.android_arm64')(928,942)
|
||||
PsiWhiteSpace(' ')(942,943)
|
||||
PsiElement(NativeDefinitionsTokenType.SEPARATOR)('=')(943,944)
|
||||
PsiWhiteSpace(' ')(944,945)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(945,957)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('strict enums')(945,957)
|
||||
PsiWhiteSpace('\n\n')(957,959)
|
||||
NativeDefinitionsStringsKeyImpl(STRINGS_KEY)(959,966)
|
||||
PsiElement(NativeDefinitionsTokenType.modules)('modules')(959,966)
|
||||
PsiElement(NativeDefinitionsTokenType.osx)('.osx')(966,970)
|
||||
PsiWhiteSpace('\n')(833,834)
|
||||
NativeDefinitionsStringsKeyImpl(STRINGS_KEY)(834,844)
|
||||
PsiElement(NativeDefinitionsTokenType.entryPoint)('entryPoint')(834,844)
|
||||
PsiElement(NativeDefinitionsTokenType.TVOS_X64)('.tvos_x64')(844,853)
|
||||
PsiWhiteSpace(' ')(853,854)
|
||||
PsiElement(NativeDefinitionsTokenType.SEPARATOR)('=')(854,855)
|
||||
PsiWhiteSpace(' ')(855,856)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(856,861)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('main3')(856,861)
|
||||
PsiWhiteSpace('\n\n')(861,863)
|
||||
NativeDefinitionsStringsKeyImpl(STRINGS_KEY)(863,877)
|
||||
PsiElement(NativeDefinitionsTokenType.nonStrictEnums)('nonStrictEnums')(863,877)
|
||||
PsiElement(NativeDefinitionsTokenType.wasm32)('.wasm32')(877,884)
|
||||
PsiWhiteSpace(' ')(884,885)
|
||||
PsiElement(NativeDefinitionsTokenType.SEPARATOR)('=')(885,886)
|
||||
PsiWhiteSpace(' ')(886,887)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(887,897)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('non strict')(887,897)
|
||||
PsiWhiteSpace('\n')(897,898)
|
||||
NativeDefinitionsStringsKeyImpl(STRINGS_KEY)(898,916)
|
||||
PsiElement(NativeDefinitionsTokenType.noStringConversion)('noStringConversion')(898,916)
|
||||
PsiElement(NativeDefinitionsTokenType.linux_arm32_hfp)('.linux_arm32_hfp')(916,932)
|
||||
PsiWhiteSpace(' ')(932,933)
|
||||
PsiElement(NativeDefinitionsTokenType.SEPARATOR)('=')(933,934)
|
||||
PsiWhiteSpace(' ')(934,935)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(935,944)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('no string')(935,944)
|
||||
PsiWhiteSpace('\n')(944,945)
|
||||
NativeDefinitionsStringsKeyImpl(STRINGS_KEY)(945,956)
|
||||
PsiElement(NativeDefinitionsTokenType.strictEnums)('strictEnums')(945,956)
|
||||
PsiElement(NativeDefinitionsTokenType.android_arm64)('.android_arm64')(956,970)
|
||||
PsiWhiteSpace(' ')(970,971)
|
||||
PsiElement(NativeDefinitionsTokenType.SEPARATOR)('=')(971,972)
|
||||
PsiWhiteSpace(' ')(972,973)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(973,977)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('baba')(973,977)
|
||||
PsiWhiteSpace('\n\n')(977,979)
|
||||
PsiElement(NativeDefinitionsTokenType.DELIM)('---\n')(979,983)
|
||||
NativeDefinitionsCodeImpl(CODE)(983,1420)
|
||||
PsiElement(NativeDefinitionsTokenType.CODE_CHARS)('\nstruct Hash { // Line comment.\n int data[2];\n};\n\n/**********************\n * Multiline comment. *\n **********************/\ninline static int strangeSum(const int* buffer, int bufferSize) {\n int result = 20;\n const char * stringLiteral = "This is a string";\n for (int i = 0; i < bufferSize; ++i) {\n result += stringLiteral[i % 10] & 1 == 0 ? (i << 1) : buffer[i / 2];\n if (stringLiter)\n }\n return result;\n}')(983,1420)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(973,985)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('strict enums')(973,985)
|
||||
PsiWhiteSpace('\n\n')(985,987)
|
||||
NativeDefinitionsStringsKeyImpl(STRINGS_KEY)(987,994)
|
||||
PsiElement(NativeDefinitionsTokenType.modules)('modules')(987,994)
|
||||
PsiElement(NativeDefinitionsTokenType.osx)('.osx')(994,998)
|
||||
PsiWhiteSpace(' ')(998,999)
|
||||
PsiElement(NativeDefinitionsTokenType.SEPARATOR)('=')(999,1000)
|
||||
PsiWhiteSpace(' ')(1000,1001)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(1001,1005)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('baba')(1001,1005)
|
||||
PsiWhiteSpace('\n')(1005,1006)
|
||||
NativeDefinitionsStringsKeyImpl(STRINGS_KEY)(1006,1013)
|
||||
PsiElement(NativeDefinitionsTokenType.modules)('modules')(1006,1013)
|
||||
PsiElement(NativeDefinitionsTokenType.WATCHOS_ARM64)('.watchos_arm64')(1013,1027)
|
||||
PsiWhiteSpace(' ')(1027,1028)
|
||||
PsiElement(NativeDefinitionsTokenType.SEPARATOR)('=')(1028,1029)
|
||||
PsiWhiteSpace(' ')(1029,1030)
|
||||
NativeDefinitionsStringsValueImpl(STRINGS_VALUE)(1030,1034)
|
||||
PsiElement(NativeDefinitionsTokenType.VALUE)('deda')(1030,1034)
|
||||
PsiWhiteSpace('\n\n')(1034,1036)
|
||||
PsiElement(NativeDefinitionsTokenType.DELIM)('---\n')(1036,1040)
|
||||
NativeDefinitionsCodeImpl(CODE)(1040,1477)
|
||||
PsiElement(NativeDefinitionsTokenType.CODE_CHARS)('\nstruct Hash { // Line comment.\n int data[2];\n};\n\n/**********************\n * Multiline comment. *\n **********************/\ninline static int strangeSum(const int* buffer, int bufferSize) {\n int result = 20;\n const char * stringLiteral = "This is a string";\n for (int i = 0; i < bufferSize; ++i) {\n result += stringLiteral[i % 10] & 1 == 0 ? (i << 1) : buffer[i / 2];\n if (stringLiter)\n }\n return result;\n}')(1040,1477)
|
||||
|
||||
Reference in New Issue
Block a user