1.1 --- a/jitcraft/SemanticAnalysis.cpp Mon Jul 09 21:40:20 2012 -0700
1.2 +++ b/jitcraft/SemanticAnalysis.cpp Mon Jul 09 22:25:52 2012 -0700
1.3 @@ -236,6 +236,11 @@
1.4 if (!type)
1.5 return NULL;
1.6
1.7 + if (type->isConst()) {
1.8 + cc_.reportError(expression->pos(), Message_ReferenceIsConstant);
1.9 + return NULL;
1.10 + }
1.11 +
1.12 return type->contained();
1.13 }
1.14
1.15 @@ -254,8 +259,13 @@
1.16 if (!var->type())
1.17 return NULL;
1.18
1.19 - if (var->type()->isReference())
1.20 + if (var->type()->isReference()) {
1.21 + if (var->type()->isConst()) {
1.22 + cc_.reportError(expression->pos(), Message_ReferenceIsConstant);
1.23 + return NULL;
1.24 + }
1.25 return var->type()->contained();
1.26 + }
1.27 return var->type();
1.28 }
1.29
1.30 @@ -479,7 +489,7 @@
1.31 size = init->elements();
1.32 }
1.33
1.34 - type = zone_->types()->unsafeArray(type, size);
1.35 + type = zone_->types()->unsafeArray(type, size, false);
1.36 if (!type)
1.37 return;
1.38
1.39 @@ -547,7 +557,7 @@
1.40 return NULL;
1.41 }
1.42
1.43 - type = zone_->types()->getReference(type);
1.44 + type = zone_->types()->getReference(type, parameter->isConst());
1.45 if (!type)
1.46 return false;
1.47 } else if (parameter->dimensions()) {
1.48 @@ -570,7 +580,7 @@
1.49 size = box.toInt();
1.50 }
1.51
1.52 - type = Type::NewArray(zone_, type, size, false);
1.53 + type = zone_->types()->unsafeArray(type, size, parameter->isConst());
1.54 if (!type)
1.55 return false;
1.56 }