mirror of
https://gitea.invidious.io/iv-org/shard-ameba.git
synced 2024-08-15 00:53:29 +00:00
Merge branch 'develop'
This commit is contained in:
commit
f8d57345d4
5 changed files with 33 additions and 3 deletions
|
@ -1,11 +1,11 @@
|
||||||
FROM alpine:3.8 as builder
|
FROM alpine:3.12 as builder
|
||||||
RUN apk add --update crystal shards openssl-dev yaml-dev musl-dev make
|
RUN apk add --update crystal shards openssl-dev yaml-dev musl-dev make
|
||||||
RUN mkdir /ameba
|
RUN mkdir /ameba
|
||||||
WORKDIR /ameba
|
WORKDIR /ameba
|
||||||
COPY . /ameba/
|
COPY . /ameba/
|
||||||
RUN make clean && make
|
RUN make clean && make
|
||||||
|
|
||||||
FROM alpine:3.8
|
FROM alpine:3.12
|
||||||
RUN apk add --update openssl yaml pcre gc libevent libgcc
|
RUN apk add --update openssl yaml pcre gc libevent libgcc
|
||||||
RUN mkdir /src
|
RUN mkdir /src
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
|
|
|
@ -140,6 +140,23 @@ module Ameba::AST
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "#ignored?" do
|
||||||
|
it "is true if variable is ignored" do
|
||||||
|
variable = Variable.new(Crystal::Var.new("_var"), scope)
|
||||||
|
variable.ignored?.should be_true
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is false if variable is not ignored" do
|
||||||
|
variable = Variable.new(Crystal::Var.new("v_ar"), scope)
|
||||||
|
variable.ignored?.should be_false
|
||||||
|
end
|
||||||
|
|
||||||
|
it "is true if variable is a black hole" do
|
||||||
|
variable = Variable.new(Crystal::Var.new("_"), scope)
|
||||||
|
variable.ignored?.should be_true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe "#eql?" do
|
describe "#eql?" do
|
||||||
var = Crystal::Var.new("foo").at(Crystal::Location.new(nil, 1, 2))
|
var = Crystal::Var.new("foo").at(Crystal::Location.new(nil, 1, 2))
|
||||||
variable = Variable.new var, scope
|
variable = Variable.new var, scope
|
||||||
|
|
|
@ -54,6 +54,14 @@ module Ameba::Rule::Lint
|
||||||
subject.catch(s).should_not be_valid
|
subject.catch(s).should_not be_valid
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "does not report ignored assigments" do
|
||||||
|
s = Source.new %(
|
||||||
|
payload, _header = decode
|
||||||
|
puts payload
|
||||||
|
)
|
||||||
|
subject.catch(s).should be_valid
|
||||||
|
end
|
||||||
|
|
||||||
it "reports a useless assignment in a proc inside a block" do
|
it "reports a useless assignment in a proc inside a block" do
|
||||||
s = Source.new %(
|
s = Source.new %(
|
||||||
def method
|
def method
|
||||||
|
|
|
@ -143,6 +143,11 @@ module Ameba::AST
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Returns true if the name starts with '_', false if not.
|
||||||
|
def ignored?
|
||||||
|
name.starts_with? '_'
|
||||||
|
end
|
||||||
|
|
||||||
# Returns true if the `node` represents exactly
|
# Returns true if the `node` represents exactly
|
||||||
# the same Crystal node as `@node`.
|
# the same Crystal node as `@node`.
|
||||||
def eql?(node)
|
def eql?(node)
|
||||||
|
|
|
@ -39,7 +39,7 @@ module Ameba::Rule::Lint
|
||||||
|
|
||||||
def test(source, node, scope : AST::Scope)
|
def test(source, node, scope : AST::Scope)
|
||||||
scope.variables.each do |var|
|
scope.variables.each do |var|
|
||||||
next if var.captured_by_block? || var.used_in_macro?
|
next if var.captured_by_block? || var.used_in_macro? || var.ignored?
|
||||||
|
|
||||||
var.assignments.each do |assign|
|
var.assignments.each do |assign|
|
||||||
next if assign.referenced? || assign.transformed?
|
next if assign.referenced? || assign.transformed?
|
||||||
|
|
Loading…
Reference in a new issue