mirror of
https://github.com/adelphes/android-dev-ext.git
synced 2025-12-23 18:08:29 +00:00
different attempt to parse using collapsable text
ranges
This commit is contained in:
33
langserver/java/validation/unit-decl-order.js
Normal file
33
langserver/java/validation/unit-decl-order.js
Normal file
@@ -0,0 +1,33 @@
|
||||
const { ModuleBlock, PackageBlock, ImportBlock, TypeDeclBlock } = require('../parser9');
|
||||
const ParseProblem = require('../parsetypes/parse-problem');
|
||||
|
||||
/**
|
||||
* @param {ModuleBlock} mod
|
||||
*/
|
||||
module.exports = function(mod) {
|
||||
let have_imports, have_type;
|
||||
const problems = [];
|
||||
for (let decl of mod.decls()) {
|
||||
let p;
|
||||
switch (true) {
|
||||
case decl instanceof PackageBlock:
|
||||
if (have_imports || have_type) {
|
||||
p = ParseProblem.Error(decl, 'package must be declared before import and type declarations');
|
||||
}
|
||||
break;
|
||||
case decl instanceof ImportBlock:
|
||||
if (have_type) {
|
||||
p = ParseProblem.Error(decl, 'imports must be declared before type declarations');
|
||||
}
|
||||
have_imports = true;
|
||||
break;
|
||||
case decl instanceof TypeDeclBlock:
|
||||
have_type = true;
|
||||
break;
|
||||
}
|
||||
if (p) {
|
||||
problems.push(p)
|
||||
}
|
||||
}
|
||||
return problems;
|
||||
}
|
||||
Reference in New Issue
Block a user