* [Flow] Function predicate declaration
The accepted syntax for function declarations is extended to allow
the following predicate declaration:
FunctionReturnType :=
Type
Predicate
Type Predicate
Predicate :=
%checks
%checks ( ConditionalExpression )
* [Flow] Minor tweaks and more examples to function predicates
* [Flow] Clean-up and better message for function predicates
* [Flow] Adding abstract function predicate example
* [Flow] Rearranging the `predicate` field to ease babel generator.
227 lines
5.5 KiB
JSON
227 lines
5.5 KiB
JSON
{
|
|
"type": "File",
|
|
"start": 0,
|
|
"end": 60,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 0
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 60
|
|
}
|
|
},
|
|
"program": {
|
|
"type": "Program",
|
|
"start": 0,
|
|
"end": 60,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 0
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 60
|
|
}
|
|
},
|
|
"sourceType": "module",
|
|
"body": [
|
|
{
|
|
"type": "DeclareFunction",
|
|
"start": 0,
|
|
"end": 60,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 0
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 60
|
|
}
|
|
},
|
|
"id": {
|
|
"type": "Identifier",
|
|
"start": 17,
|
|
"end": 59,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 17
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 59
|
|
},
|
|
"identifierName": "foo"
|
|
},
|
|
"name": "foo",
|
|
"typeAnnotation": {
|
|
"type": "TypeAnnotation",
|
|
"start": 20,
|
|
"end": 59,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 20
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 59
|
|
}
|
|
},
|
|
"typeAnnotation": {
|
|
"type": "FunctionTypeAnnotation",
|
|
"start": 20,
|
|
"end": 59,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 20
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 59
|
|
}
|
|
},
|
|
"typeParameters": null,
|
|
"params": [
|
|
{
|
|
"type": "FunctionTypeParam",
|
|
"start": 21,
|
|
"end": 29,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 21
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 29
|
|
}
|
|
},
|
|
"name": {
|
|
"type": "Identifier",
|
|
"start": 21,
|
|
"end": 22,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 21
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 22
|
|
},
|
|
"identifierName": "x"
|
|
},
|
|
"name": "x"
|
|
},
|
|
"optional": false,
|
|
"typeAnnotation": {
|
|
"type": "MixedTypeAnnotation",
|
|
"start": 24,
|
|
"end": 29,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 24
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 29
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"rest": null,
|
|
"returnType": {
|
|
"type": "BooleanTypeAnnotation",
|
|
"start": 32,
|
|
"end": 39,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 32
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 39
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"predicate": {
|
|
"type": "DeclaredPredicate",
|
|
"start": 40,
|
|
"end": 59,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 40
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 59
|
|
}
|
|
},
|
|
"expression": {
|
|
"type": "BinaryExpression",
|
|
"start": 48,
|
|
"end": 58,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 48
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 58
|
|
}
|
|
},
|
|
"left": {
|
|
"type": "Identifier",
|
|
"start": 48,
|
|
"end": 49,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 48
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 49
|
|
},
|
|
"identifierName": "x"
|
|
},
|
|
"name": "x"
|
|
},
|
|
"operator": "!==",
|
|
"right": {
|
|
"type": "NullLiteral",
|
|
"start": 54,
|
|
"end": 58,
|
|
"loc": {
|
|
"start": {
|
|
"line": 1,
|
|
"column": 54
|
|
},
|
|
"end": {
|
|
"line": 1,
|
|
"column": 58
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
],
|
|
"directives": []
|
|
}
|
|
}
|