QStringList QuickInterpreter::classes() const { QPtrList<QSClass> clsLst = env()->classes(); QStringList lst; for ( QSClass *cls = clsLst.first(); cls; cls = clsLst.next() ) { if ( cls->asClass() ) lst << cls->asClass()->identifier(); } return lst; }
void QSVarBindingNode::check( QSCheckData *c ) { var->check( c ); if ( assign ) assign->check( c ); if (!c->directLookupEnabled()) { c->addError( this, QString::fromLatin1( "QSA does not support declaring variables inside " "a 'with' block" )); return; } int attrs = c->lastAttributes(); QSClass * cl = c->currentScope(); QSMember m; if ( cl->member( 0, var->identifier(), &m ) ) { if( cl->asClass() ) { c->addError( this, QString::fromLatin1( "Variable '%1' has already been " "declared in class '%2'" ) .arg( var->identifier() ) .arg( cl->identifier() ) ); return; } m = QSMember( QSMember::Variable, 0, attrs ); cl->replaceMember( var->identifier(), &m ); idx = m.index(); } else { idx = cl->addVariableMember( var->identifier(), attrs ); } // store pointer to init node if this is a class member QSClassClass *clcl = cl->asClass(); if ( clcl ) { if( attrs & AttributeStatic ) clcl->addStaticInitializer( assign ); else clcl->addMemberInitializer( assign ); idx = -1; // Disable the variable binding node. } }