gov.llnl.babel.visitor
Class CollisionChecker

java.lang.Object
  extended by gov.llnl.babel.visitor.Visitor
      extended by gov.llnl.babel.visitor.CollisionChecker

public class CollisionChecker
extends Visitor

Checks for naming collisions two args with same name in same method, two Types with same name in a packgage, and so on for all names in the ast. For enumerations, it also checks for duplicate explicit values and assigns unique values to items otherwise unassigned. For packages, it also blocks attempts to reopen a final package. Naturally, it will detect collisions for packages that are closed and reopened.


Field Summary
protected  java.util.Map d_currentScope
           
protected  MsgList d_msgs
           
 
Constructor Summary
CollisionChecker(MsgList msgs, java.util.Map collisions)
           
 
Method Summary
protected  AttributeList checkAttributes(AttributeList attrs)
           
protected  void checkName(java.lang.String scope_name, Name name, java.util.HashMap scope)
           
protected  void checkNameInPackageScope(Name name, java.util.HashMap scope)
           
 java.lang.Object visitArgument(Argument node, java.lang.Object data)
           
 java.lang.Object visitArgumentList(ArgumentList node, java.lang.Object data)
           
 java.lang.Object visitBinaryExpr(BinaryExpr be, java.lang.Object data)
           
 java.lang.Object visitBooleanLiteral(BooleanLiteral il, java.lang.Object data)
           
 java.lang.Object visitCharacterLiteral(CharacterLiteral il, java.lang.Object data)
           
 java.lang.Object visitClassType(ClassType node, java.lang.Object data)
           
 java.lang.Object visitDComplexLiteral(DComplexLiteral il, java.lang.Object data)
           
 java.lang.Object visitDoubleLiteral(DoubleLiteral il, java.lang.Object data)
           
 java.lang.Object visitEnumeration(Enumeration node, java.lang.Object data)
           
 java.lang.Object visitEnumItem(EnumItem node, java.lang.Object data)
           
 java.lang.Object visitExtents(Extents e, java.lang.Object data)
           
 java.lang.Object visitFComplexLiteral(FComplexLiteral il, java.lang.Object data)
           
 java.lang.Object visitFloatLiteral(FloatLiteral l, java.lang.Object data)
           
 java.lang.Object visitFromClause(FromClause node, java.lang.Object data)
           
 java.lang.Object visitImportClause(ImportClause node, java.lang.Object data)
           
 java.lang.Object visitInterfaceType(InterfaceType node, java.lang.Object data)
           
 java.lang.Object visitIntLiteral(IntLiteral il, java.lang.Object data)
           
 java.lang.Object visitMethod(Method node, java.lang.Object data)
           
 java.lang.Object visitMethodList(MethodList node, java.lang.Object data)
           
 java.lang.Object visitName(Name n, java.lang.Object data)
           
 java.lang.Object visitPackage(Package node, java.lang.Object data)
           
 java.lang.Object visitRArrayType(RArrayType node, java.lang.Object data)
           
 java.lang.Object visitRequireClause(RequireClause node, java.lang.Object data)
           
 java.lang.Object visitSIDLFile(SIDLFile node, java.lang.Object data)
           
 java.lang.Object visitStringLiteral(StringLiteral il, java.lang.Object data)
           
 java.lang.Object visitStructItem(StructItem node, java.lang.Object data)
           
 java.lang.Object visitStructType(StructType node, java.lang.Object data)
           
 java.lang.Object visitThrowsList(ThrowsList node, java.lang.Object data)
           
 java.lang.Object visitUnaryExpr(UnaryExpr ue, java.lang.Object data)
           
 
Methods inherited from class gov.llnl.babel.visitor.Visitor
visitArrayType, visitAssertion, visitAttribute, visitAttributeList, visitDocComment, visitEnsures, visitFixedType, visitFuncExpr, visitInvariants, visitNode, visitRequires, visitScopedID, visitScopedIDList, visitSplicerBlock, visitSplicerImpl, visitSplicerImplList, visitSplicerList
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

d_msgs

protected MsgList d_msgs

d_currentScope

protected java.util.Map d_currentScope
Constructor Detail

CollisionChecker

public CollisionChecker(MsgList msgs,
                        java.util.Map collisions)
Method Detail

checkAttributes

protected AttributeList checkAttributes(AttributeList attrs)

checkName

protected void checkName(java.lang.String scope_name,
                         Name name,
                         java.util.HashMap scope)

checkNameInPackageScope

protected void checkNameInPackageScope(Name name,
                                       java.util.HashMap scope)

visitSIDLFile

public java.lang.Object visitSIDLFile(SIDLFile node,
                                      java.lang.Object data)
Overrides:
visitSIDLFile in class Visitor

visitImportClause

public java.lang.Object visitImportClause(ImportClause node,
                                          java.lang.Object data)
Overrides:
visitImportClause in class Visitor

visitRequireClause

public java.lang.Object visitRequireClause(RequireClause node,
                                           java.lang.Object data)
Overrides:
visitRequireClause in class Visitor

visitPackage

public java.lang.Object visitPackage(Package node,
                                     java.lang.Object data)
Overrides:
visitPackage in class Visitor

visitName

public java.lang.Object visitName(Name n,
                                  java.lang.Object data)
Overrides:
visitName in class Visitor

visitIntLiteral

public java.lang.Object visitIntLiteral(IntLiteral il,
                                        java.lang.Object data)
Overrides:
visitIntLiteral in class Visitor

visitDoubleLiteral

public java.lang.Object visitDoubleLiteral(DoubleLiteral il,
                                           java.lang.Object data)
Overrides:
visitDoubleLiteral in class Visitor

visitFloatLiteral

public java.lang.Object visitFloatLiteral(FloatLiteral l,
                                          java.lang.Object data)
Overrides:
visitFloatLiteral in class Visitor

visitCharacterLiteral

public java.lang.Object visitCharacterLiteral(CharacterLiteral il,
                                              java.lang.Object data)
Overrides:
visitCharacterLiteral in class Visitor

visitBooleanLiteral

public java.lang.Object visitBooleanLiteral(BooleanLiteral il,
                                            java.lang.Object data)
Overrides:
visitBooleanLiteral in class Visitor

visitStringLiteral

public java.lang.Object visitStringLiteral(StringLiteral il,
                                           java.lang.Object data)
Overrides:
visitStringLiteral in class Visitor

visitFComplexLiteral

public java.lang.Object visitFComplexLiteral(FComplexLiteral il,
                                             java.lang.Object data)
Overrides:
visitFComplexLiteral in class Visitor

visitDComplexLiteral

public java.lang.Object visitDComplexLiteral(DComplexLiteral il,
                                             java.lang.Object data)
Overrides:
visitDComplexLiteral in class Visitor

visitBinaryExpr

public java.lang.Object visitBinaryExpr(BinaryExpr be,
                                        java.lang.Object data)
Overrides:
visitBinaryExpr in class Visitor

visitUnaryExpr

public java.lang.Object visitUnaryExpr(UnaryExpr ue,
                                       java.lang.Object data)
Overrides:
visitUnaryExpr in class Visitor

visitExtents

public java.lang.Object visitExtents(Extents e,
                                     java.lang.Object data)
Overrides:
visitExtents in class Visitor

visitEnumeration

public java.lang.Object visitEnumeration(Enumeration node,
                                         java.lang.Object data)
Overrides:
visitEnumeration in class Visitor

visitEnumItem

public java.lang.Object visitEnumItem(EnumItem node,
                                      java.lang.Object data)
Overrides:
visitEnumItem in class Visitor

visitStructType

public java.lang.Object visitStructType(StructType node,
                                        java.lang.Object data)
Overrides:
visitStructType in class Visitor

visitStructItem

public java.lang.Object visitStructItem(StructItem node,
                                        java.lang.Object data)
Overrides:
visitStructItem in class Visitor

visitClassType

public java.lang.Object visitClassType(ClassType node,
                                       java.lang.Object data)
Overrides:
visitClassType in class Visitor

visitInterfaceType

public java.lang.Object visitInterfaceType(InterfaceType node,
                                           java.lang.Object data)
Overrides:
visitInterfaceType in class Visitor

visitMethodList

public java.lang.Object visitMethodList(MethodList node,
                                        java.lang.Object data)
Overrides:
visitMethodList in class Visitor

visitMethod

public java.lang.Object visitMethod(Method node,
                                    java.lang.Object data)
Overrides:
visitMethod in class Visitor

visitArgumentList

public java.lang.Object visitArgumentList(ArgumentList node,
                                          java.lang.Object data)
Overrides:
visitArgumentList in class Visitor

visitArgument

public java.lang.Object visitArgument(Argument node,
                                      java.lang.Object data)
Overrides:
visitArgument in class Visitor

visitRArrayType

public java.lang.Object visitRArrayType(RArrayType node,
                                        java.lang.Object data)
Overrides:
visitRArrayType in class Visitor

visitThrowsList

public java.lang.Object visitThrowsList(ThrowsList node,
                                        java.lang.Object data)
Overrides:
visitThrowsList in class Visitor

visitFromClause

public java.lang.Object visitFromClause(FromClause node,
                                        java.lang.Object data)
Overrides:
visitFromClause in class Visitor