Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv21542/src/pyrfta/test/rfta
Modified Files:
codeanalysis.py codeanalysistest.py
Log Message:
* added handling for simple variable declaration
Index: codeanalysis.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysis.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** codeanalysis.py 29 May 2003 14:05:56 -0000 1.1
--- codeanalysis.py 29 May 2003 17:03:06 -0000 1.2
***************
*** 1,6 ****
import rfta
! class LocalVariableDeclarator(rfta.StatementVisitor):
def __init__( self, resolver ):
self.resolver = resolver
--- 1,9 ----
import rfta
!
! class LocalVariableDeclarator(rfta.StatementVisitor,rfta.ExpressionVisitor):
def __init__( self, resolver ):
+ rfta.StatementVisitor.__init__( self )
+ rfta.ExpressionVisitor.__init__( self )
self.resolver = resolver
***************
*** 8,14 ****
functionBody.accept(self)
! def visitCompoundStatement(self,compound):
self.resolver.enterScope()
self.resolver.exitScope()
class LocalVariableResolver:
--- 11,30 ----
functionBody.accept(self)
! def visitCompoundStatement( self, compound ):
self.resolver.enterScope()
+ for statement in compound.getStatements():
+ statement.accept( self )
self.resolver.exitScope()
+
+ def visitNullStatement( self, statement ):
+ pass
+
+ def visitDeclarationStatement( self, statement ):
+ statement.declaration.accept( self )
+
+ def visitDeclaratorExpression( self, expression ):
+ for declarator in expression.getDeclarators():
+ self.resolver.declareVariable( declarator.name.identifier )
+
class LocalVariableResolver:
Index: codeanalysistest.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysistest.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** codeanalysistest.py 29 May 2003 14:05:56 -0000 1.1
--- codeanalysistest.py 29 May 2003 17:03:06 -0000 1.2
***************
*** 17,20 ****
--- 17,30 ----
self.resolver = None
+ def makeVariableDecl( self, name, init ):
+ declarator = rfta.Declarator( rfta.TypePart(),
+ rfta.Identifier(name),
+ rfta.TypePart(),
+ rfta.AssignInitializerExpression( rfta.GenericExpression( init ) ) )
+ declExpr = rfta.DeclaratorExpression( rfta.TypePart( "int" ) )
+ declExpr.appendDeclarator( declarator )
+ declStatement = rfta.DeclarationStatement( declExpr )
+ return declStatement
+
def testConstruction( self ):
pass
***************
*** 24,29 ****
self.declarator.visitCompoundStatement( self.body )
! self.assertEqual( self.resolver.enterScope.argsPassed, [()] )
! self.assertEqual( self.resolver.exitScope.argsPassed, [()] )
def suite():
--- 34,51 ----
self.declarator.visitCompoundStatement( self.body )
! self.assertEqual( self.resolver.called, [ "enterScope", "exitScope" ] )
!
! def testDummyBody( self ):
! self.body.appendStatement( rfta.NullStatement() )
! self.resolver.declareVariable.setExpectNoCall()
! self.declarator.visitCompoundStatement( self.body )
!
! self.assertEqual( self.resolver.called, [ "enterScope", "exitScope" ] )
!
! def testDeclareOneVariable( self ):
! self.body.appendStatement( self.makeVariableDecl( "var1", "3" ) )
! self.declarator.visitCompoundStatement( self.body )
! self.assertEqual( self.resolver.called, [ "enterScope", "declareVariable", "exitScope" ] )
! self.assertEqual( self.resolver.declareVariable.argsPassed, [("var1",)] )
def suite():
|