diff -r 9c544823d090 -r c0740249963c src/Types.cpp --- a/src/Types.cpp Sat Aug 04 19:33:06 2012 -0700 +++ b/src/Types.cpp Sat Aug 04 20:12:20 2012 -0700 @@ -20,6 +20,7 @@ #include "Types.h" #include "Zone.h" #include "Strings.h" +#include "Structures.h" #include "Heap-inl.h" using namespace ke; @@ -221,3 +222,20 @@ return Compare(left->contained(), right->contained()); } } + +Descriptor * +Type::lookupField(Handle name, unsigned *index) +{ + assert(isStruct()); + + for (unsigned i = 0; i < fields_->length(); i++) { + Descriptor *desc = Descriptor::cast(fields_->at(i)); + if (desc->name() == name) { + *index = i; + return desc; + } + } + + return NULL; +} +