@slippy-lint/slippy
Version:
A simple but powerful linter for Solidity
39 lines (34 loc) • 1.28 kB
text/typescript
import { StateVariableDefinition } from "@nomicfoundation/slang/ast";
import { TerminalKind } from "@nomicfoundation/slang/cst";
export function isPrivate(stateVariable: StateVariableDefinition): boolean {
return stateVariable.attributes.items.some(
(attribute) =>
"kind" in attribute.variant &&
attribute.variant.kind === TerminalKind.PrivateKeyword,
);
}
export function isConstant(stateVariable: StateVariableDefinition): boolean {
return stateVariable.attributes.items.some(
(attribute) =>
"kind" in attribute.variant &&
attribute.variant.kind === TerminalKind.ConstantKeyword,
);
}
export function isImmutable(stateVariable: StateVariableDefinition): boolean {
return stateVariable.attributes.items.some(
(attribute) =>
"kind" in attribute.variant &&
attribute.variant.kind === TerminalKind.ImmutableKeyword,
);
}
export function hasDefaultVisibility(
stateVariable: StateVariableDefinition,
): boolean {
return !stateVariable.attributes.items.some(
(attribute) =>
"kind" in attribute.variant &&
(attribute.variant.kind === TerminalKind.PrivateKeyword ||
attribute.variant.kind === TerminalKind.InternalKeyword ||
attribute.variant.kind === TerminalKind.PublicKeyword),
);
}