class
Crystal::SkipMacroCodeCoverageException
Overview
Raised when another exception is raised when calculating macro code coverage.
Extends SkipMacroException to ensure it's also treated as a somewhat non-failure exception.
Rescuing this exception allows the macro code coverage tool to run on the code that was collected up to before the exception was raised, while not resulting in an error/running all the other code after it. The exception's message/trace is printed to STDOUT while the report is written to STDERR. This is especially useful for testing error flows of custom macro logic as it allows the code to assert the proper error was raised, while still allowing to save the coverage report. I.e. the report JSON/exception outputs are not co-mingled. The main benefit of this is preventing the need to run these kind of tests twice, once for the coverage report and once for the actual test assertions.
Defined in:
compiler/crystal/semantic/exception.crConstructors
Instance methods inherited from class Crystal::SkipMacroException
expanded_before_skip : String
expanded_before_skip,
macro_expansion_pragmas : Hash(Int32, Array(Lexer::LocPragma)) | Nil
macro_expansion_pragmas
Constructor methods inherited from class Crystal::SkipMacroException
new(expanded_before_skip : String, macro_expansion_pragmas : Nil | Hash(Int32, Array(Crystal::Lexer::LocPopPragma | Crystal::Lexer::LocPushPragma | Crystal::Lexer::LocSetPragma)))
new
Instance methods inherited from class Exception
backtrace : Array(String)
backtrace,
backtrace?
backtrace?,
cause : Exception | Nil
cause,
inspect(io : IO) : Nil
inspect,
inspect_with_backtrace(io : IO) : Nilinspect_with_backtrace : String inspect_with_backtrace, message : String | Nil message, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Exception
new(message : String | Nil = nil, cause : Exception | Nil = nil)
new
Instance methods inherited from class Reference
==(other : self)==(other : JSON::Any)
==(other : YAML::Any)
==(other) ==, dup dup, hash(hasher) hash, initialize initialize, inspect(io : IO) : Nil inspect, object_id : UInt64 object_id, pretty_print(pp) : Nil pretty_print, same?(other : Reference) : Bool
same?(other : Nil) same?, to_s(io : IO) : Nil to_s
Constructor methods inherited from class Reference
new
new,
unsafe_construct(address : Pointer, *args, **opts) : self
unsafe_construct
Class methods inherited from class Reference
pre_initialize(address : Pointer)
pre_initialize
Instance methods inherited from class Object
! : Bool
!,
!=(other)
!=,
!~(other)
!~,
==(other)
==,
===(other : JSON::Any)===(other : YAML::Any)
===(other) ===, =~(other) =~, as(type : Class) as, as?(type : Class) as?, class class, dup dup, hash(hasher)
hash hash, in?(collection : Object) : Bool
in?(*values : Object) : Bool in?, inspect(io : IO) : Nil
inspect : String inspect, is_a?(type : Class) : Bool is_a?, itself itself, nil? : Bool nil?, not_nil!(message)
not_nil! not_nil!, pretty_inspect(width = 79, newline = "\n", indent = 0) : String pretty_inspect, pretty_print(pp : PrettyPrint) : Nil pretty_print, responds_to?(name : Symbol) : Bool responds_to?, tap(&) tap, to_json(io : IO) : Nil
to_json : String to_json, to_pretty_json(indent : String = " ") : String
to_pretty_json(io : IO, indent : String = " ") : Nil to_pretty_json, to_s(io : IO) : Nil
to_s : String to_s, to_yaml(io : IO) : Nil
to_yaml : String to_yaml, try(&) try, unsafe_as(type : T.class) forall T unsafe_as
Class methods inherited from class Object
from_json(string_or_io : String | IO, root : String)from_json(string_or_io : String | IO) from_json, from_yaml(string_or_io : String | IO) from_yaml