Пример #1
0
 virtual bool visit_arguments(AST_arguments *node) {
     if (node->kwarg) _doSet(node->kwarg);
     if (node->vararg.size()) _doSet(node->vararg);
     for (int i = 0; i < node->args.size(); i++) {
         _doSet(node->args[i]);
     }
     return true;
 }
Пример #2
0
    virtual bool visit_alias(AST_alias* node) {
        const std::string* name = &node->name;
        if (node->asname.size())
            name = &node->asname;

        _doSet(*name);
        return true;
    }
Пример #3
0
        virtual bool visit_import(AST_Import *node) {
            for (int i = 0; i < node->names.size(); i++) {
                AST_alias *alias = node->names[i];
                std::string &name = alias->name;
                if (alias->asname.size())
                    name = alias->asname;

                _doSet(name);
            }
            return true;
        }
Пример #4
0
 void _doSet(AST* t) {
     switch (t->type) {
         case AST_TYPE::Attribute:
             // doesn't affect definedness (yet?)
             break;
         case AST_TYPE::Name:
             _doSet(((AST_Name*)t)->id);
             break;
         case AST_TYPE::Subscript:
             break;
         case AST_TYPE::Tuple: {
             AST_Tuple *tt = static_cast<AST_Tuple*>(t);
             for (int i = 0; i < tt->elts.size(); i++) {
                 _doSet(tt->elts[i]);
             }
             break;
         }
         default:
             ASSERT(0, "Unknown type for DefinednessVisitor: %d", t->type);
     }
 }
Пример #5
0
 virtual bool visit_assign(AST_Assign *node) {
     for (int i = 0; i < node->targets.size(); i++) {
         _doSet(node->targets[i]);
     }
     return true;
 }
Пример #6
0
 virtual bool visit_functiondef(AST_FunctionDef *node) {
     _doSet(node->name);
     return true;
 }
Пример #7
0
 virtual bool visit_classdef(AST_ClassDef *node) {
     _doSet(node->name);
     return true;
 }
Пример #8
0
 bool visit_loadname(BST_LoadName* node) override {
     // don't visit the vreg it will never get killed
     // visit_vreg(&node->vreg, false);
     _doSet(node->vreg_dst);
     return true;
 }
Пример #9
0
 bool visit_copyvreg(BST_CopyVReg* node) override {
     // don't visit the vreg it will never get killed
     // visit_vreg(&node->vreg_src, false);
     _doSet(node->vreg_dst);
     return true;
 }