Just as we currently have .namedTypes.MemberExpression and .builders.memberExpression, perhaps we could also have an auto-generated .patterns namespace containing functions like .patterns.MemberExpression for building arbitrary pattern-matching types, e.g.
var types = require("ast-types");
var p = types.patterns;
var thisFooPattern = p.MemberExpression(
p.ThisExpression(),
p.Identifier("foo")
);
types.traverse(ast, function(node) {
if (thisFooPattern.check(node)) {
console.log("found this.foo:", node);
}
});
Note that p.ThisExpression() should probably just return types.namedTypes.ThisExpression. In other words, patterns are ultimately just types.Type instances.
Just as we currently have
.namedTypes.MemberExpression
and.builders.memberExpression
, perhaps we could also have an auto-generated.patterns
namespace containing functions like.patterns.MemberExpression
for building arbitrary pattern-matching types, e.g.