| Index: runtime/vm/kernel_to_il.cc
|
| diff --git a/runtime/vm/kernel_to_il.cc b/runtime/vm/kernel_to_il.cc
|
| index 73760227dabbe7928674ab39c94203236b2e7315..2133a130028d3bd2245938b02c716f500df376c5 100644
|
| --- a/runtime/vm/kernel_to_il.cc
|
| +++ b/runtime/vm/kernel_to_il.cc
|
| @@ -1770,6 +1770,28 @@ void ConstantEvaluator::VisitNot(Not* node) {
|
| }
|
|
|
|
|
| +void ConstantEvaluator::VisitPropertyGet(PropertyGet* node) {
|
| + const size_t kLengthLen = strlen("length");
|
| +
|
| + String* string = node->name()->string();
|
| + if (string->size() == kLengthLen &&
|
| + memcmp(string->buffer(), "length", kLengthLen) == 0) {
|
| + node->receiver()->AcceptExpressionVisitor(this);
|
| + if (result_.IsString()) {
|
| + const dart::String& str =
|
| + dart::String::Handle(Z, dart::String::RawCast(result_.raw()));
|
| + result_ = Integer::New(str.Length());
|
| + } else {
|
| + H.ReportError(
|
| + "Constant expressions can only call "
|
| + "'length' on string constants.");
|
| + }
|
| + } else {
|
| + VisitDefaultExpression(node);
|
| + }
|
| +}
|
| +
|
| +
|
| const TypeArguments* ConstantEvaluator::TranslateTypeArguments(
|
| const Function& target,
|
| dart::Class* target_klass,
|
|
|