summaryrefslogtreecommitdiff
path: root/Build/source/utils/asymptote/dec.cc
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-05-28 02:18:52 +0000
committerKarl Berry <karl@freefriends.org>2011-05-28 02:18:52 +0000
commitc59fe5fe4739f0c61560f05d4e42b4e552219b27 (patch)
tree8cf79e85e394b3177a28d374415840a4e0a025ad /Build/source/utils/asymptote/dec.cc
parent771db15706dbf3f4af8b630dcb15646a3e5fda00 (diff)
asy 2.10
git-svn-id: svn://tug.org/texlive/trunk@22633 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/utils/asymptote/dec.cc')
-rw-r--r--Build/source/utils/asymptote/dec.cc18
1 files changed, 14 insertions, 4 deletions
diff --git a/Build/source/utils/asymptote/dec.cc b/Build/source/utils/asymptote/dec.cc
index 731e4b9db1c..10154609576 100644
--- a/Build/source/utils/asymptote/dec.cc
+++ b/Build/source/utils/asymptote/dec.cc
@@ -83,10 +83,16 @@ void arrayTy::prettyprint(ostream &out, Int indent)
// NOTE: Can this be merged with trans somehow?
void arrayTy::addOps(coenv &e, record *r)
{
- types::array *t=dynamic_cast<types::array *>(trans(e, true));
- e.e.addArrayOps(t);
- if (r)
- r->e.addArrayOps(t);
+ types::ty *t=trans(e, true);
+
+ // Only add ops if it is an array (and not, say, an error)
+ if (t->kind == types::ty_array) {
+ types::array *at=dynamic_cast<types::array *>(t);
+ assert(at);
+ e.e.addArrayOps(at);
+ if (r)
+ r->e.addArrayOps(at);
+ }
}
types::ty *arrayTy::trans(coenv &e, bool tacit)
@@ -94,6 +100,10 @@ types::ty *arrayTy::trans(coenv &e, bool tacit)
types::ty *ct = cell->trans(e, tacit);
assert(ct);
+ // Don't make an array of errors.
+ if (ct->kind == types::ty_error)
+ return ct;
+
types::array *t = dims->truetype(ct);
assert(t);