summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2014-01-05 18:03:23 -0500
committerAdrian Thurston <thurston@complang.org>2014-01-05 18:03:23 -0500
commitf48bd57fd3abd855fe14b2c8d1a8d166ddf08ef4 (patch)
tree46ff5fdb6fcc0c82dd335fe3532242d0786bf642
parent9d8a2ce75c15c5564f0eb598f6d28f40dbb69947 (diff)
downloadcolm-f48bd57fd3abd855fe14b2c8d1a8d166ddf08ef4.tar.gz
added checkRedecl and insertField to scope object
-rw-r--r--src/declare.cc9
-rw-r--r--src/lookup.cc6
-rw-r--r--src/parsetree.h6
3 files changed, 17 insertions, 4 deletions
diff --git a/src/declare.cc b/src/declare.cc
index 982148d8..aa42beb4 100644
--- a/src/declare.cc
+++ b/src/declare.cc
@@ -47,6 +47,15 @@ void Compiler::initUniqueTypes( )
uniqeTypeMap.insert( uniqueTypeAny );
}
+ObjectField *ObjNameScope::checkRedecl( const String &name )
+{
+ return owner->checkRedecl( name );
+}
+
+void ObjNameScope::insertField( const String &name, ObjectField *value )
+{
+ return owner->insertField( name, value );
+}
ObjectField *ObjectDef::checkRedecl( const String &name )
{
diff --git a/src/lookup.cc b/src/lookup.cc
index 437cd477..05b5f5ad 100644
--- a/src/lookup.cc
+++ b/src/lookup.cc
@@ -40,19 +40,19 @@ ObjectDef *UniqueType::objectDef()
}
/* Recurisve find through a single object def's scope. */
-ObjectField *ObjectDef::findFieldInScope( const String &name, const ObjNameScope *inScope ) const
+ObjectField *ObjectDef::findFieldInScope( const ObjNameScope *inScope, const String &name ) const
{
ObjFieldMapEl *objDefMapEl = inScope->objFieldMap->find( name );
if ( objDefMapEl != 0 )
return objDefMapEl->value;
if ( inScope->parentScope != 0 )
- return findFieldInScope( name, inScope->parentScope );
+ return findFieldInScope( inScope->parentScope, name );
return 0;
}
ObjectField *ObjNameScope::findField( const String &name ) const
{
- return owner->findFieldInScope( name, this );
+ return owner->findFieldInScope( this, name );
}
ObjMethod *ObjectDef::findMethod( const String &name ) const
diff --git a/src/parsetree.h b/src/parsetree.h
index 9d147589..fbe3395b 100644
--- a/src/parsetree.h
+++ b/src/parsetree.h
@@ -2393,6 +2393,9 @@ struct ObjNameScope
}
ObjectField *findField( const String &name ) const;
+
+ ObjectField *checkRedecl( const String &name );
+ void insertField( const String &name, ObjectField *value );
};
struct ObjectDef
@@ -2442,12 +2445,13 @@ struct ObjectDef
long nextOffset;
long firstNonTree;
+
void referenceField( Compiler *pd, ObjectField *field );
void initField( Compiler *pd, ObjectField *field );
void createCode( Compiler *pd, CodeVect &code );
ObjectField *checkRedecl( const String &name );
ObjMethod *findMethod( const String &name ) const;
- ObjectField *findFieldInScope( const String &name, const ObjNameScope *inScope ) const;
+ ObjectField *findFieldInScope( const ObjNameScope *scope, const String &name ) const;
void insertField( const String &name, ObjectField *value );
void resolve( Compiler *pd );
ObjectField *findFieldNum( long offset );