In GitHub - ralsina/nicolino: A not-quite-minimalistic SSG written in Crystal if I upgrade to 0.19 build fails with this weird backtrace, all inside crinja:
nicolino on main [$⇡] is 📦 v0.10.0 via 🔮 v1.19.0 took 11s
> shards build --error-trace
Dependencies are satisfied
Building: nicolino
Error target nicolino failed to compile:
In lib/crinja/src/lib/filter/collections.cr:2:10
2 | Crinja.filter :list do
^-----
Error: expanding macro
In lib/crinja/src/lib/filter/collections.cr:2:3
2 | Crinja.filter :list do
^
Error: expanding macro
There was a problem expanding macro 'filter'
Called macro defined in lib/crinja/src/runtime/callable.cr:67:3
67 | macro filter(defaults = nil, name = nil, &block)
Which expanded to:
> 1 | Crinja.callable(Crinja::Filter, :list, nil) do
2 | target = arguments.target!
3 |
4 | begin
5 | value = target.raw
6 |
7 | case value
8 | when String
9 | value.chars
10 | when Array
11 | value
12 | when .responds_to?(:to_a)
13 | target.to_a
14 | else
15 | raise(TypeError.new("target for list filter cannot be converted to list"))
16 | end
17 | end
18 | end
19 |
Error: expanding macro
In lib/crinja/src/lib/filter/collections.cr:11:14
11 | target.to_a
^---
Error: instantiating 'Crinja::Value#to_a()'
In lib/crinja/src/runtime/value.cr:404:5
404 | each do |item|
^---
Error: instantiating 'each()'
In lib/crinja/src/runtime/value.cr:260:5
260 | raw_each do |raw|
^-------
Error: instantiating 'raw_each()'
In lib/crinja/src/runtime/value.cr:244:14
244 | object.each { |value| yield value.as(Value).raw }
^---
Error: instantiating '(Array(Crinja::Value) | Crinja::Function::Cycler | Crinja::Tuple | Iterator(Crinja::Value))#each(
In /usr/lib/crystal/iterator.cr:649:20
649 | value = self.next
^---
Error: instantiating 'Crinja::Tag::For::ConditionalIterator#next()'
In lib/crinja/src/lib/tag/for.cr:116:7
116 | loop do
^---
Error: instantiating 'loop()'
In lib/crinja/src/lib/tag/for.cr:116:7
116 | loop do
^---
Error: instantiating 'loop()'
In lib/crinja/src/lib/tag/for.cr:121:27
121 | if @env.evaluator.value(@condition).truthy?
^----
Error: instantiating 'Crinja::Evaluator#value(Crinja::AST::ExpressionNode+)'
In lib/crinja/src/runtime/evaluator.cr:12:15
12 | Value.new evaluate(expression)
^-------
Error: instantiating 'evaluate(Crinja::AST::ExpressionNode+)'
In lib/crinja/src/runtime/evaluator.cr:54:12
54 | left = evaluate expression.left
^-------
Error: instantiating 'evaluate(Crinja::AST::ExpressionNode+)'
In lib/crinja/src/runtime/evaluator.cr:69:13
69 | right = evaluate expression.right
^-------
Error: instantiating 'evaluate(Crinja::AST::ExpressionNode+)'
In lib/crinja/src/runtime/evaluator.cr:85:18
85 | callable = call_on_member(identifier)
^-------------
Error: instantiating 'call_on_member(Crinja::AST::MemberExpression)'
In lib/crinja/src/runtime/evaluator.cr:113:18
113 | identifier = evaluate expression.identifier
^-------
Error: instantiating 'evaluate(Crinja::AST::ExpressionNode+)'
In lib/crinja/src/runtime/evaluator.cr:155:14
155 | object = value! expression.identifier
^-----
Error: instantiating 'value!(Crinja::AST::ExpressionNode+)'
In lib/crinja/src/runtime/evaluator.cr:26:32
26 | raise UndefinedError.new(name_for_expression(expression))
^------------------
Error: instantiating 'name_for_expression(Crinja::AST::ExpressionNode+)'
In lib/crinja/src/runtime/evaluator.cr:200:8
200 | "#{name_for_expression(expression.identifier)}.#{expression.member.name}"
^------------------
Error: instantiating 'name_for_expression(Crinja::AST::ExpressionNode+)'
In lib/crinja/src/runtime/evaluator.cr:204:54
204 | "#{name_for_expression(expression.identifier)}[#{evaluate expression.argument}]"
^-------
Error: instantiating 'evaluate(Crinja::AST::ExpressionNode+)'
In lib/crinja/src/runtime/evaluator.cr:176:24
176 | value = Resolver.resolve_attribute(argument, object)
^----------------
Error: instantiating 'Crinja::Resolver.resolve_attribute((Array(Crinja::Value) | Bool | Crinja::Value | Float64 | Hash(Crinja::Value, Crinja::Value) | Int64 | String | Nil), Crinja::Value)'
In lib/crinja/src/runtime/resolver.cr:7:18
7 | value = self.resolve_getattr(name, object)
^--------------
Error: instantiating 'Crinja::Resolver.resolve_getattr((Array(Crinja::Value) | Bool | Crinja::Value | Float64 | Hash(Crinja::Value, Crinja::Value) | Int64 | String | Nil), Crinja::Value)'
In lib/crinja/src/runtime/resolver.cr:31:12
31 | self.resolve_with_hash_accessor(name, value)
^-------------------------
Error: instantiating 'Crinja::Resolver.resolve_with_hash_accessor(Crinja::Value, Crinja::Value)'
In lib/crinja/src/runtime/resolver.cr:58:32
58 | return Value.new object[name.to_s]
^
Error: no overload matches 'Proc(Crinja::Arguments, Crinja::Value)#[]' with type String
Overloads are:
- Proc(*T, R)#[](*args : *T)