Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 11 additions & 4 deletions pymbolic/mapper/evaluator.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,6 @@

from __future__ import annotations

from pytools import ndindex


__copyright__ = "Copyright (C) 2009-2013 Andreas Kloeckner"

Expand Down Expand Up @@ -41,6 +39,8 @@

from typing_extensions import override

from pytools import ndindex

from pymbolic.mapper import CachedMapper, CSECachingMapperMixin, Mapper, ResultT


Expand All @@ -53,7 +53,7 @@
import pymbolic.primitives as p
from pymbolic.geometric_algebra import MultiVector
from pymbolic.rational import Rational
from pymbolic.typing import Expression
from pymbolic.typing import ArithmeticExpression, Expression


class UnknownVariableError(Exception):
Expand Down Expand Up @@ -116,7 +116,14 @@

@override
def map_subscript(self, expr: p.Subscript, /) -> ResultT:
return self.rec(expr.aggregate)[self.rec(expr.index)]
agg = self.rec(expr.aggregate)
index = self.rec(expr.index)
from pymbolic.primitives import EmptyOK, ExpressionNode
if isinstance(agg, ExpressionNode):
return cast("ResultT",
agg[EmptyOK(cast("ArithmeticExpression", index))])
else:
return agg[index] # pyright: ignore[reportIndexIssue]

Check warning on line 126 in pymbolic/mapper/evaluator.py

View workflow job for this annotation

GitHub Actions / basedpyright

Return type is unknown (reportUnknownVariableType)

@override
def map_lookup(self, expr: p.Lookup, /) -> ResultT:
Expand Down
Loading