1.1 --- a/src/compiler/NameBinding.cpp Sun Nov 18 22:18:23 2012 -0800
1.2 +++ b/src/compiler/NameBinding.cpp Mon Nov 19 01:13:44 2012 -0800
1.3 @@ -802,7 +802,24 @@
1.4 Parameter *param = sig.parameters()->at(i);
1.5 if ((type = bindType(param->type())) == NULL)
1.6 return false;
1.7 +
1.8 + if (type->isArray() || param->dims()) {
1.9 + int dims[MAX_ARRAY_DEPTH];
1.10 + int levels = evaluateDimensions(param->pos(), type, param->dims(), dims);
1.11 + if (levels < 0)
1.12 + return false;
1.13 +
1.14 + // If we got extra dimensions, we need to build a new type.
1.15 + // Unlike variables, we do not infer anything about array
1.16 + // sizes from its default initializer.
1.17 + if (param->dims()) {
1.18 + if ((type = buildArrayType(type, dims, param->dims()->length())) == NULL)
1.19 + return false;
1.20 + }
1.21 + }
1.22 +
1.23 params->set(zone_, i, type);
1.24 + param->sym()->setType(type);
1.25 }
1.26
1.27 fun->setParameterTypes(params);