forked from lix-project/lix
Provide a more useful error message when a dynamic attr lookup fails
This commit is contained in:
parent
8d5f472f2c
commit
eac5841970
|
@ -757,8 +757,16 @@ void ExprSelect::eval(EvalState & state, Env & env, Value & v)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
state.forceAttrs(*vAttrs, pos);
|
state.forceAttrs(*vAttrs, pos);
|
||||||
if ((j = vAttrs->attrs->find(name)) == vAttrs->attrs->end())
|
if ((j = vAttrs->attrs->find(name)) == vAttrs->attrs->end()) {
|
||||||
throwEvalError("attribute `%1%' missing, at %2%", showAttrPath(attrPath), pos);
|
AttrPath staticPath;
|
||||||
|
AttrPath::const_iterator j;
|
||||||
|
for (j = attrPath.begin(); j != i; ++j)
|
||||||
|
staticPath.push_back(AttrName(getName(*j, state, env)));
|
||||||
|
staticPath.push_back(AttrName(getName(*j, state, env)));
|
||||||
|
for (j = j + 1; j != attrPath.end(); ++j)
|
||||||
|
staticPath.push_back(*j);
|
||||||
|
throwEvalError("attribute `%1%' missing, at %2%", showAttrPath(staticPath), pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
vAttrs = j->value;
|
vAttrs = j->value;
|
||||||
pos2 = j->pos;
|
pos2 = j->pos;
|
||||||
|
|
Loading…
Reference in a new issue