mirror of
https://github.com/adelphes/android-dev-ext.git
synced 2025-12-24 02:19:15 +00:00
treat default and synchronized as modifiers
This commit is contained in:
@@ -18,6 +18,11 @@ const { getOperatorType, Token } = require('./tokenizer');
|
|||||||
function flattenBlocks(blocks) {
|
function flattenBlocks(blocks) {
|
||||||
return blocks.reduce((arr,block) => {
|
return blocks.reduce((arr,block) => {
|
||||||
if (block instanceof Token) {
|
if (block instanceof Token) {
|
||||||
|
// 'default' and 'synchronised' are not modifiers inside method bodies
|
||||||
|
if (block.kind === 'modifier' && /^(default|synchronized)$/.test(block.value)) {
|
||||||
|
block.kind = 'statement-kw'
|
||||||
|
block.simplified = block.value;
|
||||||
|
}
|
||||||
arr.push(block);
|
arr.push(block);
|
||||||
} else {
|
} else {
|
||||||
arr = [...arr, ...flattenBlocks(block.blockArray().blocks)];
|
arr = [...arr, ...flattenBlocks(block.blockArray().blocks)];
|
||||||
|
|||||||
@@ -102,20 +102,26 @@ function tokenize(source, offset = 0, length = source.length) {
|
|||||||
'operator',
|
'operator',
|
||||||
];
|
];
|
||||||
/**
|
/**
|
||||||
|
* Note that some keywords have context-dependant meanings:
|
||||||
|
* default - modifier or statement-keyword
|
||||||
|
* synchronized - modifier or statement-keyword
|
||||||
|
* They are treated as modifiers and updated with their new token-type when method bodies are parsed
|
||||||
|
*
|
||||||
* ```
|
* ```
|
||||||
* true|false boolean
|
* true|false boolean
|
||||||
* this|null object
|
* this|null object
|
||||||
* int|long|short|byte|float|double|char|boolean|void primitive type
|
* int|long|short|byte|float|double|char|boolean|void primitive type
|
||||||
* new
|
* new
|
||||||
* instanceof
|
* instanceof
|
||||||
* public|private|protected|static|final|abstract|native|volatile|transient modifier
|
* public|private|protected|static|final|abstract|native|volatile|transient|default|synchronized modifier
|
||||||
* if|else|while|for|do|try|catch|finally|switch|case|default|return|break|continue|throw|synchronized statement keyword
|
* if|else|while|for|do|try|catch|finally|switch|case|return|break|continue|throw statement keyword
|
||||||
* class|enum|interface type keyword
|
* class|enum|interface type keyword
|
||||||
* package|import package keyword
|
* package|import package keyword
|
||||||
* \w+ word
|
* \w+ word
|
||||||
* ```
|
* ```
|
||||||
*/
|
*/
|
||||||
const word_re = /^(?:(true|false)|(this|super|null)|(int|long|short|byte|float|double|char|boolean|void)|(new)|(instanceof)|(public|private|protected|static|final|abstract|native|volatile|transient)|(if|else|while|for|do|try|catch|finally|switch|case|default|return|break|continue|throw|synchronized|assert)|(class|enum|interface)|(extends|implements|throws)|(package|import)|(.+))$/;
|
const word_re = /^(?:(true|false)|(this|super|null)|(int|long|short|byte|float|double|char|boolean|void)|(new)|(instanceof)|(public|private|protected|static|final|abstract|native|volatile|transient|default|synchronized)|(if|else|while|for|do|try|catch|finally|switch|case|return|break|continue|throw|assert)|(class|enum|interface)|(extends|implements|throws)|(package|import)|(.+))$/;
|
||||||
|
|
||||||
const word_token_types = [
|
const word_token_types = [
|
||||||
'boolean-literal',
|
'boolean-literal',
|
||||||
'object-literal',
|
'object-literal',
|
||||||
|
|||||||
Reference in New Issue
Block a user