Merge branch 'super-inside-let-subject' into 'master'

Rework let and subject to allow super

See merge request arctic-fox/spectator!22
This commit is contained in:
Mike Miller 2019-10-25 03:00:00 +00:00
commit 557d7d431a
3 changed files with 7 additions and 7 deletions

View file

@ -1,12 +1,12 @@
name: spectator
version: 0.8.3
version: 0.8.4
description: |
A feature-rich spec testing framework for Crystal with similarities to RSpec.
authors:
- Michael Miller <icy.arctic.fox@gmail.com>
crystal: 0.31.0
crystal: 0.31.1
license: MIT

View file

@ -5,7 +5,7 @@ module Spectator
extend self
# Current version of the Spectator library.
VERSION = "0.8.2"
VERSION = "0.8.4"
# Top-level describe method.
# All specs in a file must be wrapped in this call.

View file

@ -897,7 +897,7 @@ module Spectator::DSL
# Block variant.
# Create a block that returns the value.
let!(%value) {{block}}
let!({{name.id}}) {{block}}
# Wrapper to hold the value.
# This will be nil if the value hasn't been referenced yet.
@ -913,12 +913,12 @@ module Spectator::DSL
# Unwrap it from the wrapper variable.
# Here we use typeof to get around the issue
# that the macro has no idea what type the value is.
wrapper.unsafe_as(::Spectator::Internals::TypedValueWrapper(typeof(%value))).value
wrapper.unsafe_as(::Spectator::Internals::TypedValueWrapper(typeof(previous_def))).value
else
# The value isn't cached,
# Construct it and store it in the wrapper.
%value.tap do |value|
@%wrapper = ::Spectator::Internals::TypedValueWrapper(typeof(%value)).new(value)
previous_def.tap do |value|
@%wrapper = ::Spectator::Internals::TypedValueWrapper(typeof(previous_def)).new(value)
end
end
end