|
From: <bl...@us...> - 2003-05-30 07:31:28
|
Update of /cvsroot/cpptool/rfta/src/pyrfta/test/rfta
In directory sc8-pr-cvs1:/tmp/cvs-serv3286/src/pyrfta/test/rfta
Modified Files:
codeanalysis.py codeanalysistest.py
Log Message:
* added test & fixed bu in scope handling
Index: codeanalysis.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysis.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** codeanalysis.py 29 May 2003 21:15:18 -0000 1.3
--- codeanalysis.py 30 May 2003 07:31:24 -0000 1.4
***************
*** 61,67 ****
class Scope:
- children = []
-
def __init__( self, parent_scope ):
self.parent_scope = parent_scope
if self.parent_scope:
--- 61,66 ----
class Scope:
def __init__( self, parent_scope ):
+ self.children = []
self.parent_scope = parent_scope
if self.parent_scope:
***************
*** 73,77 ****
def parentResolve( self, identifier ):
if self.parent_scope:
! return self.parent_scope.resolve( self, identifier )
return None
--- 72,76 ----
def parentResolve( self, identifier ):
if self.parent_scope:
! return self.parent_scope.resolve( identifier )
return None
***************
*** 82,89 ****
class LocalVariableScope(Scope):
- declared = {}
-
def __init__( self, parent_scope ):
Scope.__init__( self, parent_scope )
def declare( self, variableName, declExpr ):
--- 81,87 ----
class LocalVariableScope(Scope):
def __init__( self, parent_scope ):
Scope.__init__( self, parent_scope )
+ self.declared = {}
def declare( self, variableName, declExpr ):
***************
*** 99,106 ****
class UsingDeclScope(Scope):
- imported = {}
-
def __init__( self, parent_scope ):
Scope.__init__( self, parent_scope )
def importIdentifier( self, identifier ):
--- 97,103 ----
class UsingDeclScope(Scope):
def __init__( self, parent_scope ):
Scope.__init__( self, parent_scope )
+ self.imported = {}
def importIdentifier( self, identifier ):
***************
*** 113,122 ****
class LocalVariableResolver:
- standard_for_scope = True
- scope_depth = 0
- resolved = {}
-
def __init__( self, function_scope ):
self.current_scope = function_scope
def resolveVariable( self, variableName, variable_name_element ):
--- 110,118 ----
class LocalVariableResolver:
def __init__( self, function_scope ):
self.current_scope = function_scope
+ self.standard_for_scope = True
+ self.scope_depth = 0
+ self.resolved = {}
def resolveVariable( self, variableName, variable_name_element ):
Index: codeanalysistest.py
===================================================================
RCS file: /cvsroot/cpptool/rfta/src/pyrfta/test/rfta/codeanalysistest.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** codeanalysistest.py 29 May 2003 21:15:18 -0000 1.3
--- codeanalysistest.py 30 May 2003 07:31:25 -0000 1.4
***************
*** 160,167 ****
self.resolver = LocalVariableResolver( FunctionScope( self.function ) )
self.declExpr1 = self.makeVariableDeclExpr( [("var1", "1"), ("var2","b"), ("var3","c")] )
self.declExpr2 = self.makeVariableDeclExpr( [("x", "1"), ("y","b"), ("z","c")] )
self.identifiers = {}
! for name in [ "var1", "var2", "var3", "x", "y", "z" ]:
! for count in range(1,5):
variable_name = name + "." + str(count)
self.identifiers[ variable_name ] = self.makeVariableName( variable_name )
--- 160,171 ----
self.resolver = LocalVariableResolver( FunctionScope( self.function ) )
self.declExpr1 = self.makeVariableDeclExpr( [("var1", "1"), ("var2","b"), ("var3","c")] )
+ self.declExpr1b = self.makeVariableDeclExpr( [("var1", "a"), ("var2","z")] )
self.declExpr2 = self.makeVariableDeclExpr( [("x", "1"), ("y","b"), ("z","c")] )
+ self.declExpr2b = self.makeVariableDeclExpr( [("x", "1"), ("y","b")] )
+ self.declExpr3 = self.makeVariableDeclExpr( [("a", "1"), ("b","b"), ("c","c")] )
+ self.declExpr3b = self.makeVariableDeclExpr( [("a", "1"), ("b","b")] )
self.identifiers = {}
! for name in [ "var1", "var2", "var3", "x", "y", "z", "a", "b", "c" ]:
! for count in range(1,10):
variable_name = name + "." + str(count)
self.identifiers[ variable_name ] = self.makeVariableName( variable_name )
***************
*** 187,201 ****
self.assertEqual( self.resolver.current_scope.function, self.function )
! def testDeclareAndResolve( self ):
self.resolver.enterScope()
self.declareVariables( ["var1", "var2", "var3"], self.declExpr1 )
! self.declareVariables( ["x", "y", "z"], self.declExpr1 )
! self.resolveVariables( [ ("var1",1), ("var2",1) ] )
self.resolver.exitScope()
! self.checkVariableResolutions( ["var1.1", "var2.1"], self.declExpr1 )
def suite():
! return unittest.makeSuite(IdentifierResolverTestCase, LocaleVariableResolverTest)
if __name__ == '__main__':
--- 191,226 ----
self.assertEqual( self.resolver.current_scope.function, self.function )
! def testResolveWithNoSubScope( self ):
self.resolver.enterScope()
self.declareVariables( ["var1", "var2", "var3"], self.declExpr1 )
! self.declareVariables( ["x", "y", "z"], self.declExpr2 )
! self.resolveVariables( [ ("var1",1), ("var2",1), ("var3",1), ("var2",2), ("var3",2), ("var3",3), ("var1",2) ] )
! self.resolveVariables( [ ("x",1), ("y",1), ("x",2), ("z",1), ("z",2), ("y",1) ] )
self.resolver.exitScope()
! self.checkVariableResolutions( ["var1.1", "var2.1", "var1.2", "var2.2", "var3.1", "var3.2", "var3.3"], self.declExpr1 )
! self.checkVariableResolutions( ["x.1", "x.2", "y.1", "z.1", "z.2"], self.declExpr2 )
!
! def testResolveWithSubScope( self ):
! self.resolver.enterScope()
! self.declareVariables( ["var1","var2"], self.declExpr1 )
! self.resolveVariables( [ ("var1",1), ("var1",2), ("var2",1) ] )
! self.resolver.enterScope()
! self.declareVariables( ["var1"], self.declExpr1b )
! self.resolver.enterScope()
! self.resolveVariables( [ ("var1",3), ("var2",2), ("var2",3) ] )
! self.resolver.exitScope()
! self.resolveVariables( [ ("var1",4), ("var2",4) ] )
! self.resolver.exitScope()
! self.resolveVariables( [ ("var1",5), ("var2",5) ] )
! self.resolver.exitScope()
!
! self.checkVariableResolutions( ["var1.1", "var1.2", "var1.5",
! "var2.1", "var2.2", "var2.3", "var2.4", "var2.5"], self.declExpr1 )
! self.checkVariableResolutions( ["var1.3", "var1.4"], self.declExpr1b )
!
def suite():
! return unittest.makeSuite(LocaleVariableResolverTest)
if __name__ == '__main__':
|