css-tree: WalkContext.atrule can be null (#37119)

* css-tree: WalkContext.atrule can be null

* css-tree: everything except `root` can be null

Thanks @erik-kallen for the suggestion.

* css-tree: add some more type assertions to the tests
This commit is contained in:
Utkarsh Kukreti
2019-07-29 10:43:02 -07:00
committed by Jesse Trinity
parent 9838f610fb
commit 615769dfcb
2 changed files with 14 additions and 10 deletions
+6 -2
View File
@@ -16,16 +16,20 @@ csstree.walk(ast, {});
csstree.walk(ast, {
enter(node, item, list) {
this.stylesheet; // $ExpectType StyleSheet
this.root; // $ExpectType CssNode
this.stylesheet; // $ExpectType StyleSheet | null
node; // $ExpectType CssNode
item; // $ExpectType ListItem<CssNode>
list; // $ExpectType List<CssNode>
this.atrule; // $ExpectType Atrule | null
},
leave(node, item, list) {
this.stylesheet; // $ExpectType StyleSheet
this.root; // $ExpectType CssNode
this.stylesheet; // $ExpectType StyleSheet | null
node; // $ExpectType CssNode
item; // $ExpectType ListItem<CssNode>
list; // $ExpectType List<CssNode>
this.atrule; // $ExpectType Atrule | null
},
visit: 'ClassSelector',
reverse: false,
+8 -8
View File
@@ -517,14 +517,14 @@ export function generate(ast: CssNode, options?: GenerateOptions): string;
export interface WalkContext {
root: CssNode;
stylesheet: StyleSheet;
atrule: Atrule;
atrulePrelude: AtrulePrelude;
rule: Rule;
selector: SelectorList;
block: Block;
declaration: Declaration;
function: FunctionNode | PseudoClassSelector | PseudoElementSelector;
stylesheet: StyleSheet | null;
atrule: Atrule | null;
atrulePrelude: AtrulePrelude | null;
rule: Rule | null;
selector: SelectorList | null;
block: Block | null;
declaration: Declaration | null;
function: FunctionNode | PseudoClassSelector | PseudoElementSelector | null;
}
export type EnterOrLeaveFn = (this: WalkContext, node: CssNode, item: ListItem<CssNode>, list: List<CssNode>) => void;