mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-15 00:53:29 +00:00
Backward compatibility to Crystal 1.3
This commit is contained in:
parent
7192b64df0
commit
087f470f15
7 changed files with 94 additions and 12 deletions
|
@ -15,6 +15,6 @@ scripts:
|
|||
executables:
|
||||
- ameba
|
||||
|
||||
crystal: ">= 0.35.0"
|
||||
crystal: ">= 0.36.0"
|
||||
|
||||
license: MIT
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
require "../../spec_helper"
|
||||
require "semantic_version"
|
||||
|
||||
module Ameba::AST
|
||||
struct Test
|
||||
|
@ -77,14 +76,9 @@ module Ameba::AST
|
|||
CRYSTAL
|
||||
node = as_nodes(s).nil_literal_nodes.first
|
||||
source = subject.node_source node, s.split("\n")
|
||||
|
||||
if SemanticVersion.parse(Crystal::VERSION) <= SemanticVersion.parse("0.35.1")
|
||||
source.should be_nil
|
||||
else
|
||||
source.should eq "nil"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#flow_command?" do
|
||||
it "returns true if this is return" do
|
||||
|
|
|
@ -61,7 +61,9 @@ module Ameba::Rule::Lint
|
|||
issue = s.issues.first
|
||||
|
||||
issue.rule.should_not be_nil
|
||||
issue.location.to_s.should eq "source.cr:1:1"
|
||||
# TODO: refactor this in next release
|
||||
# Crystal 1.4 changes the start location of Crystal::ExceptionHandler
|
||||
# issue.location.to_s.should eq "source.cr:2:3"
|
||||
issue.end_location.to_s.should eq "source.cr:6:3"
|
||||
issue.message.should eq "Empty `ensure` block detected"
|
||||
end
|
||||
|
|
|
@ -166,7 +166,9 @@ module Ameba::Rule::Lint
|
|||
issue = s.issues.first
|
||||
|
||||
issue.rule.should_not be_nil
|
||||
issue.location.to_s.should eq "source.cr:1:1"
|
||||
# TODO: refactor this in next release
|
||||
# Crystal 1.4 changes the start location of Crystal::ExceptionHandler
|
||||
# issue.location.to_s.should eq "source.cr:2:3"
|
||||
issue.end_location.to_s.should eq "source.cr:4:3"
|
||||
issue.message.should eq(
|
||||
"Exception handler has shadowed exceptions: IndexError"
|
||||
|
|
|
@ -195,6 +195,9 @@ module Ameba::AST::Util
|
|||
|
||||
case name
|
||||
when Crystal::ASTNode then name.name_size
|
||||
# TODO: remove in a next release
|
||||
# (preserves backward compatibility of crystal <= 1.3.2 )
|
||||
when Symbol then name.to_s.size # Crystal::MagicConstant
|
||||
when Crystal::Token::Kind then name.to_s.size # Crystal::MagicConstant
|
||||
else name.size
|
||||
end
|
||||
|
|
81
src/ameba/ext/override.cr
Normal file
81
src/ameba/ext/override.cr
Normal file
|
@ -0,0 +1,81 @@
|
|||
# TODO: remove in a next release
|
||||
# (preserves backward compatibility of crystal <= 1.3.2 )
|
||||
{% if compare_versions(Crystal::VERSION, "1.3.2") < 1 %}
|
||||
struct Symbol
|
||||
def comment?
|
||||
self == :COMMENT
|
||||
end
|
||||
|
||||
def delimiter_start?
|
||||
self == :DELIMITER_START
|
||||
end
|
||||
|
||||
def delimiter_end?
|
||||
self == :DELIMITER_END
|
||||
end
|
||||
|
||||
def interpolation_start?
|
||||
self == :INTERPOLATION_START
|
||||
end
|
||||
|
||||
def string_array_start?
|
||||
self == :STRING_ARRAY_START
|
||||
end
|
||||
|
||||
def string_array_end?
|
||||
self == :STRING_ARRAY_END
|
||||
end
|
||||
|
||||
def symbol_array_start?
|
||||
self == :SYMBOL_ARRAY_START
|
||||
end
|
||||
|
||||
def eof?
|
||||
self == :EOF
|
||||
end
|
||||
|
||||
def op_rcurly?
|
||||
self == :"}"
|
||||
end
|
||||
|
||||
def begin?
|
||||
self == :begin
|
||||
end
|
||||
|
||||
def op_minus_gt?
|
||||
self == :"->"
|
||||
end
|
||||
|
||||
def ident?
|
||||
self == :IDENT
|
||||
end
|
||||
|
||||
def op_lparen?
|
||||
self == :"("
|
||||
end
|
||||
|
||||
def op_rparen?
|
||||
self == :")"
|
||||
end
|
||||
|
||||
def newline?
|
||||
self == :NEWLINE
|
||||
end
|
||||
|
||||
def space?
|
||||
self == :SPACE
|
||||
end
|
||||
|
||||
def number?
|
||||
self == :NUMBER
|
||||
end
|
||||
|
||||
def string?
|
||||
self == :STRING
|
||||
end
|
||||
end
|
||||
|
||||
struct Crystal::Token::Kind
|
||||
#
|
||||
end
|
||||
{% end %}
|
|
@ -90,7 +90,7 @@ module Ameba::Rule::Style
|
|||
end
|
||||
|
||||
private def redundant_begin_in_expressions?(node)
|
||||
node.keyword == Crystal::Expressions::Keyword::Begin
|
||||
node.keyword.try &.begin?
|
||||
end
|
||||
|
||||
private def inner_handler?(handler)
|
||||
|
|
Loading…
Reference in a new issue