Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
b5542f7f
R
Rust
项目概览
int
/
Rust
接近 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b5542f7f
编写于
6月 13, 2014
作者:
K
Keegan McAllister
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Convert builtin lints to uppercase names for style consistency
上级
21e7b936
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
126 addition
and
126 deletion
+126
-126
src/librustc/driver/driver.rs
src/librustc/driver/driver.rs
+2
-2
src/librustc/front/feature_gate.rs
src/librustc/front/feature_gate.rs
+1
-1
src/librustc/lint/builtin.rs
src/librustc/lint/builtin.rs
+107
-107
src/librustc/lint/context.rs
src/librustc/lint/context.rs
+3
-3
src/librustc/middle/dead.rs
src/librustc/middle/dead.rs
+1
-1
src/librustc/middle/liveness.rs
src/librustc/middle/liveness.rs
+3
-3
src/librustc/middle/privacy.rs
src/librustc/middle/privacy.rs
+1
-1
src/librustc/middle/resolve.rs
src/librustc/middle/resolve.rs
+3
-3
src/librustc/middle/trans/base.rs
src/librustc/middle/trans/base.rs
+2
-2
src/librustc/middle/typeck/check/mod.rs
src/librustc/middle/typeck/check/mod.rs
+2
-2
src/librustdoc/core.rs
src/librustdoc/core.rs
+1
-1
未找到文件。
src/librustc/driver/driver.rs
浏览文件 @
b5542f7f
...
...
@@ -786,7 +786,7 @@ pub fn collect_crate_types(session: &Session,
}
Some
(
ref
n
)
if
n
.equiv
(
&
(
"bin"
))
=>
Some
(
config
::
CrateTypeExecutable
),
Some
(
_
)
=>
{
session
.add_lint
(
lint
::
builtin
::
unknown_crate_type
,
session
.add_lint
(
lint
::
builtin
::
UNKNOWN_CRATE_TYPE
,
ast
::
CRATE_NODE_ID
,
a
.span
,
"invalid `crate_type`
\
...
...
@@ -794,7 +794,7 @@ pub fn collect_crate_types(session: &Session,
None
}
_
=>
{
session
.add_lint
(
lint
::
builtin
::
unknown_crate_type
,
session
.add_lint
(
lint
::
builtin
::
UNKNOWN_CRATE_TYPE
,
ast
::
CRATE_NODE_ID
,
a
.span
,
"`crate_type` requires a
\
...
...
src/librustc/front/feature_gate.rs
浏览文件 @
b5542f7f
...
...
@@ -409,7 +409,7 @@ pub fn check_crate(sess: &Session, krate: &ast::Crate) {
directive not necessary"
);
}
None
=>
{
sess
.add_lint
(
lint
::
builtin
::
unknown_features
,
sess
.add_lint
(
lint
::
builtin
::
UNKNOWN_FEATURES
,
ast
::
CRATE_NODE_ID
,
mi
.span
,
"unknown feature"
.to_string
());
...
...
src/librustc/lint/builtin.rs
浏览文件 @
b5542f7f
...
...
@@ -54,14 +54,14 @@
use
syntax
::
parse
::
token
;
use
syntax
::{
ast
,
ast_util
,
visit
};
declare_lint!
(
while_true
,
Warn
,
declare_lint!
(
WHILE_TRUE
,
Warn
,
"suggest using `loop { }` instead of `while true { }`"
)
pub
struct
WhileTrue
;
impl
LintPass
for
WhileTrue
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
while_true
)
lint_array!
(
WHILE_TRUE
)
}
fn
check_expr
(
&
mut
self
,
cx
:
&
Context
,
e
:
&
ast
::
Expr
)
{
...
...
@@ -71,7 +71,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
ast
::
ExprLit
(
lit
)
=>
{
match
lit
.node
{
ast
::
LitBool
(
true
)
=>
{
cx
.span_lint
(
while_true
,
e
.span
,
cx
.span_lint
(
WHILE_TRUE
,
e
.span
,
"denote infinite loops with loop
\
{ ... }"
);
}
...
...
@@ -86,14 +86,14 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
}
}
declare_lint!
(
unnecessary_typecast
,
Allow
,
declare_lint!
(
UNNECESSARY_TYPECAST
,
Allow
,
"detects unnecessary type casts, that can be removed"
)
pub
struct
UnusedCasts
;
impl
LintPass
for
UnusedCasts
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
unnecessary_typecast
)
lint_array!
(
UNNECESSARY_TYPECAST
)
}
fn
check_expr
(
&
mut
self
,
cx
:
&
Context
,
e
:
&
ast
::
Expr
)
{
...
...
@@ -101,7 +101,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
ast
::
ExprCast
(
expr
,
ty
)
=>
{
let
t_t
=
ast_ty_to_ty
(
cx
,
&
infer
::
new_infer_ctxt
(
cx
.tcx
),
ty
);
if
ty
::
get
(
ty
::
expr_ty
(
cx
.tcx
,
expr
))
.sty
==
ty
::
get
(
t_t
)
.sty
{
cx
.span_lint
(
unnecessary_typecast
,
ty
.span
,
"unnecessary type cast"
);
cx
.span_lint
(
UNNECESSARY_TYPECAST
,
ty
.span
,
"unnecessary type cast"
);
}
}
_
=>
()
...
...
@@ -109,13 +109,13 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
}
}
declare_lint!
(
unsigned_negate
,
Warn
,
declare_lint!
(
UNSIGNED_NEGATE
,
Warn
,
"using an unary minus operator on unsigned type"
)
declare_lint!
(
type_limits
,
Warn
,
declare_lint!
(
TYPE_LIMITS
,
Warn
,
"comparisons made useless by limits of the types involved"
)
declare_lint!
(
type_overflow
,
Warn
,
declare_lint!
(
TYPE_OVERFLOW
,
Warn
,
"literal out of range for its type"
)
pub
struct
TypeLimits
{
...
...
@@ -133,7 +133,7 @@ pub fn new() -> TypeLimits {
impl
LintPass
for
TypeLimits
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
unsigned_negate
,
type_limits
,
type_overflow
)
lint_array!
(
UNSIGNED_NEGATE
,
TYPE_LIMITS
,
TYPE_OVERFLOW
)
}
fn
check_expr
(
&
mut
self
,
cx
:
&
Context
,
e
:
&
ast
::
Expr
)
{
...
...
@@ -143,7 +143,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
ast
::
ExprLit
(
lit
)
=>
{
match
lit
.node
{
ast
::
LitUint
(
..
)
=>
{
cx
.span_lint
(
unsigned_negate
,
e
.span
,
cx
.span_lint
(
UNSIGNED_NEGATE
,
e
.span
,
"negation of unsigned int literal may
\
be unintentional"
);
},
...
...
@@ -154,7 +154,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
let
t
=
ty
::
expr_ty
(
cx
.tcx
,
expr
);
match
ty
::
get
(
t
)
.sty
{
ty
::
ty_uint
(
_
)
=>
{
cx
.span_lint
(
unsigned_negate
,
e
.span
,
cx
.span_lint
(
UNSIGNED_NEGATE
,
e
.span
,
"negation of unsigned int variable may
\
be unintentional"
);
},
...
...
@@ -172,7 +172,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
},
ast
::
ExprBinary
(
binop
,
l
,
r
)
=>
{
if
is_comparison
(
binop
)
&&
!
check_limits
(
cx
.tcx
,
binop
,
l
,
r
)
{
cx
.span_lint
(
type_limits
,
e
.span
,
cx
.span_lint
(
TYPE_LIMITS
,
e
.span
,
"comparison is useless due to type limits"
);
}
},
...
...
@@ -193,7 +193,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
lit_val
*=
-
1
;
}
if
lit_val
<
min
||
lit_val
>
max
{
cx
.span_lint
(
type_overflow
,
e
.span
,
cx
.span_lint
(
TYPE_OVERFLOW
,
e
.span
,
"literal out of range for its type"
);
}
},
...
...
@@ -209,7 +209,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
_
=>
fail
!
()
};
if
lit_val
<
min
||
lit_val
>
max
{
cx
.span_lint
(
type_overflow
,
e
.span
,
cx
.span_lint
(
TYPE_OVERFLOW
,
e
.span
,
"literal out of range for its type"
);
}
},
...
...
@@ -315,14 +315,14 @@ fn is_comparison(binop: ast::BinOp) -> bool {
}
}
declare_lint!
(
ctypes
,
Warn
,
declare_lint!
(
CTYPES
,
Warn
,
"proper use of libc types in foreign modules"
)
pub
struct
CTypes
;
impl
LintPass
for
CTypes
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
ctypes
)
lint_array!
(
CTYPES
)
}
fn
check_item
(
&
mut
self
,
cx
:
&
Context
,
it
:
&
ast
::
Item
)
{
...
...
@@ -331,18 +331,18 @@ fn check_ty(cx: &Context, ty: &ast::Ty) {
ast
::
TyPath
(
_
,
_
,
id
)
=>
{
match
cx
.tcx.def_map
.borrow
()
.get_copy
(
&
id
)
{
def
::
DefPrimTy
(
ast
::
TyInt
(
ast
::
TyI
))
=>
{
cx
.span_lint
(
ctypes
,
ty
.span
,
cx
.span_lint
(
CTYPES
,
ty
.span
,
"found rust type `int` in foreign module, while
\
libc::c_int or libc::c_long should be used"
);
}
def
::
DefPrimTy
(
ast
::
TyUint
(
ast
::
TyU
))
=>
{
cx
.span_lint
(
ctypes
,
ty
.span
,
cx
.span_lint
(
CTYPES
,
ty
.span
,
"found rust type `uint` in foreign module, while
\
libc::c_uint or libc::c_ulong should be used"
);
}
def
::
DefTy
(
def_id
)
=>
{
if
!
adt
::
is_ffi_safe
(
cx
.tcx
,
def_id
)
{
cx
.span_lint
(
ctypes
,
ty
.span
,
cx
.span_lint
(
CTYPES
,
ty
.span
,
"found enum type without foreign-function-safe
\
representation annotation in foreign module"
);
// hmm... this message could be more helpful
...
...
@@ -377,13 +377,13 @@ fn check_foreign_fn(cx: &Context, decl: &ast::FnDecl) {
}
}
declare_lint!
(
managed_heap_memory
,
Allow
,
declare_lint!
(
MANAGED_HEAP_MEMORY
,
Allow
,
"use of managed (@ type) heap memory"
)
declare_lint!
(
owned_heap_memory
,
Allow
,
declare_lint!
(
OWNED_HEAP_MEMORY
,
Allow
,
"use of owned (Box type) heap memory"
)
declare_lint!
(
heap_memory
,
Allow
,
declare_lint!
(
HEAP_MEMORY
,
Allow
,
"use of any (Box type or @ type) heap memory"
)
pub
struct
HeapMemory
;
...
...
@@ -416,22 +416,22 @@ fn check_heap_type(&self, cx: &Context, span: Span, ty: ty::t) {
if
n_uniq
>
0
{
let
s
=
ty_to_str
(
cx
.tcx
,
ty
);
let
m
=
format!
(
"type uses owned (Box type) pointers: {}"
,
s
);
cx
.span_lint
(
owned_heap_memory
,
span
,
m
.as_slice
());
cx
.span_lint
(
heap_memory
,
span
,
m
.as_slice
());
cx
.span_lint
(
OWNED_HEAP_MEMORY
,
span
,
m
.as_slice
());
cx
.span_lint
(
HEAP_MEMORY
,
span
,
m
.as_slice
());
}
if
n_box
>
0
{
let
s
=
ty_to_str
(
cx
.tcx
,
ty
);
let
m
=
format!
(
"type uses managed (@ type) pointers: {}"
,
s
);
cx
.span_lint
(
managed_heap_memory
,
span
,
m
.as_slice
());
cx
.span_lint
(
heap_memory
,
span
,
m
.as_slice
());
cx
.span_lint
(
MANAGED_HEAP_MEMORY
,
span
,
m
.as_slice
());
cx
.span_lint
(
HEAP_MEMORY
,
span
,
m
.as_slice
());
}
}
}
impl
LintPass
for
HeapMemory
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
managed_heap_memory
,
owned_heap_memory
,
heap_memory
)
lint_array!
(
MANAGED_HEAP_MEMORY
,
OWNED_HEAP_MEMORY
,
HEAP_MEMORY
)
}
fn
check_item
(
&
mut
self
,
cx
:
&
Context
,
it
:
&
ast
::
Item
)
{
...
...
@@ -463,7 +463,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
}
}
declare_lint!
(
raw_pointer_deriving
,
Warn
,
declare_lint!
(
RAW_POINTER_DERIVING
,
Warn
,
"uses of #[deriving] with raw pointers are rarely correct"
)
struct
RawPtrDerivingVisitor
<
'a
>
{
...
...
@@ -474,7 +474,7 @@ impl<'a> visit::Visitor<()> for RawPtrDerivingVisitor<'a> {
fn
visit_ty
(
&
mut
self
,
ty
:
&
ast
::
Ty
,
_
:
())
{
static
MSG
:
&
'static
str
=
"use of `#[deriving]` with a raw pointer"
;
match
ty
.node
{
ast
::
TyPtr
(
..
)
=>
self
.cx
.span_lint
(
raw_pointer_deriving
,
ty
.span
,
MSG
),
ast
::
TyPtr
(
..
)
=>
self
.cx
.span_lint
(
RAW_POINTER_DERIVING
,
ty
.span
,
MSG
),
_
=>
{}
}
visit
::
walk_ty
(
self
,
ty
,
());
...
...
@@ -498,7 +498,7 @@ pub fn new() -> RawPointerDeriving {
impl
LintPass
for
RawPointerDeriving
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
raw_pointer_deriving
)
lint_array!
(
RAW_POINTER_DERIVING
)
}
fn
check_item
(
&
mut
self
,
cx
:
&
Context
,
item
:
&
ast
::
Item
)
{
...
...
@@ -531,14 +531,14 @@ fn check_item(&mut self, cx: &Context, item: &ast::Item) {
}
}
declare_lint!
(
unused_attribute
,
Warn
,
declare_lint!
(
UNUSED_ATTRIBUTE
,
Warn
,
"detects attributes that were not used by the compiler"
)
pub
struct
UnusedAttribute
;
impl
LintPass
for
UnusedAttribute
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
unused_attribute
)
lint_array!
(
UNUSED_ATTRIBUTE
)
}
fn
check_attribute
(
&
mut
self
,
cx
:
&
Context
,
attr
:
&
ast
::
Attribute
)
{
...
...
@@ -598,7 +598,7 @@ fn check_attribute(&mut self, cx: &Context, attr: &ast::Attribute) {
}
if
!
attr
::
is_used
(
attr
)
{
cx
.span_lint
(
unused_attribute
,
attr
.span
,
"unused attribute"
);
cx
.span_lint
(
UNUSED_ATTRIBUTE
,
attr
.span
,
"unused attribute"
);
if
CRATE_ATTRS
.contains
(
&
attr
.name
()
.get
())
{
let
msg
=
match
attr
.node.style
{
ast
::
AttrOuter
=>
"crate-level attribute should be an inner
\
...
...
@@ -606,27 +606,27 @@ fn check_attribute(&mut self, cx: &Context, attr: &ast::Attribute) {
ast
::
AttrInner
=>
"crate-level attribute should be in the
\
root module"
,
};
cx
.span_lint
(
unused_attribute
,
attr
.span
,
msg
);
cx
.span_lint
(
UNUSED_ATTRIBUTE
,
attr
.span
,
msg
);
}
}
}
}
declare_lint!
(
path_statement
,
Warn
,
declare_lint!
(
PATH_STATEMENT
,
Warn
,
"path statements with no effect"
)
pub
struct
PathStatement
;
impl
LintPass
for
PathStatement
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
path_statement
)
lint_array!
(
PATH_STATEMENT
)
}
fn
check_stmt
(
&
mut
self
,
cx
:
&
Context
,
s
:
&
ast
::
Stmt
)
{
match
s
.node
{
ast
::
StmtSemi
(
expr
,
_
)
=>
{
match
expr
.node
{
ast
::
ExprPath
(
_
)
=>
cx
.span_lint
(
path_statement
,
s
.span
,
ast
::
ExprPath
(
_
)
=>
cx
.span_lint
(
PATH_STATEMENT
,
s
.span
,
"path statement with no effect"
),
_
=>
()
}
...
...
@@ -636,17 +636,17 @@ fn check_stmt(&mut self, cx: &Context, s: &ast::Stmt) {
}
}
declare_lint!
(
unused_must_use
,
Warn
,
declare_lint!
(
UNUSED_MUST_USE
,
Warn
,
"unused result of a type flagged as #[must_use]"
)
declare_lint!
(
unused_result
,
Allow
,
declare_lint!
(
UNUSED_RESULT
,
Allow
,
"unused result of an expression in a statement"
)
pub
struct
UnusedResult
;
impl
LintPass
for
UnusedResult
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
unused_must_use
,
unused_result
)
lint_array!
(
UNUSED_MUST_USE
,
UNUSED_RESULT
)
}
fn
check_stmt
(
&
mut
self
,
cx
:
&
Context
,
s
:
&
ast
::
Stmt
)
{
...
...
@@ -674,7 +674,7 @@ fn check_stmt(&mut self, cx: &Context, s: &ast::Stmt) {
ast_map
::
NodeItem
(
it
)
=>
{
if
attr
::
contains_name
(
it
.attrs
.as_slice
(),
"must_use"
)
{
cx
.span_lint
(
unused_must_use
,
s
.span
,
cx
.span_lint
(
UNUSED_MUST_USE
,
s
.span
,
"unused result which must be used"
);
warned
=
true
;
}
...
...
@@ -684,7 +684,7 @@ fn check_stmt(&mut self, cx: &Context, s: &ast::Stmt) {
}
else
{
csearch
::
get_item_attrs
(
&
cx
.sess
()
.cstore
,
did
,
|
attrs
|
{
if
attr
::
contains_name
(
attrs
.as_slice
(),
"must_use"
)
{
cx
.span_lint
(
unused_must_use
,
s
.span
,
cx
.span_lint
(
UNUSED_MUST_USE
,
s
.span
,
"unused result which must be used"
);
warned
=
true
;
}
...
...
@@ -694,19 +694,19 @@ fn check_stmt(&mut self, cx: &Context, s: &ast::Stmt) {
_
=>
{}
}
if
!
warned
{
cx
.span_lint
(
unused_result
,
s
.span
,
"unused result"
);
cx
.span_lint
(
UNUSED_RESULT
,
s
.span
,
"unused result"
);
}
}
}
declare_lint!
(
deprecated_owned_vector
,
Allow
,
declare_lint!
(
DEPRECATED_OWNED_VECTOR
,
Allow
,
"use of a `~[T]` vector"
)
pub
struct
DeprecatedOwnedVector
;
impl
LintPass
for
DeprecatedOwnedVector
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
deprecated_owned_vector
)
lint_array!
(
DEPRECATED_OWNED_VECTOR
)
}
fn
check_expr
(
&
mut
self
,
cx
:
&
Context
,
e
:
&
ast
::
Expr
)
{
...
...
@@ -714,7 +714,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
match
ty
::
get
(
t
)
.sty
{
ty
::
ty_uniq
(
t
)
=>
match
ty
::
get
(
t
)
.sty
{
ty
::
ty_vec
(
_
,
None
)
=>
{
cx
.span_lint
(
deprecated_owned_vector
,
e
.span
,
cx
.span_lint
(
DEPRECATED_OWNED_VECTOR
,
e
.span
,
"use of deprecated `~[]` vector; replaced by `std::vec::Vec`"
)
}
_
=>
{}
...
...
@@ -724,14 +724,14 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
}
}
declare_lint!
(
non_camel_case_types
,
Warn
,
declare_lint!
(
NON_CAMEL_CASE_TYPES
,
Warn
,
"types, variants and traits should have camel case names"
)
pub
struct
NonCamelCaseTypes
;
impl
LintPass
for
NonCamelCaseTypes
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
non_camel_case_types
)
lint_array!
(
NON_CAMEL_CASE_TYPES
)
}
fn
check_item
(
&
mut
self
,
cx
:
&
Context
,
it
:
&
ast
::
Item
)
{
...
...
@@ -756,7 +756,7 @@ fn check_case(cx: &Context, sort: &str, ident: ast::Ident, span: Span) {
let
s
=
token
::
get_ident
(
ident
);
if
!
is_camel_case
(
ident
)
{
cx
.span_lint
(
non_camel_case_types
,
span
,
cx
.span_lint
(
NON_CAMEL_CASE_TYPES
,
span
,
format!
(
"{} `{}` should have a camel case name such as `{}`"
,
sort
,
s
,
to_camel_case
(
s
.get
()))
.as_slice
());
}
...
...
@@ -809,7 +809,7 @@ fn method_context(cx: &Context, m: &ast::Method) -> MethodContext {
}
}
declare_lint!
(
non_snake_case_functions
,
Warn
,
declare_lint!
(
NON_SNAKE_CASE_FUNCTIONS
,
Warn
,
"methods and functions should have snake case names"
)
pub
struct
NonSnakeCaseFunctions
;
...
...
@@ -852,7 +852,7 @@ fn to_snake_case(str: &str) -> String {
let
s
=
token
::
get_ident
(
ident
);
if
!
is_snake_case
(
ident
)
{
cx
.span_lint
(
non_snake_case_functions
,
span
,
cx
.span_lint
(
NON_SNAKE_CASE_FUNCTIONS
,
span
,
format!
(
"{} `{}` should have a snake case name such as `{}`"
,
sort
,
s
,
to_snake_case
(
s
.get
()))
.as_slice
());
}
...
...
@@ -861,7 +861,7 @@ fn to_snake_case(str: &str) -> String {
impl
LintPass
for
NonSnakeCaseFunctions
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
non_snake_case_functions
)
lint_array!
(
NON_SNAKE_CASE_FUNCTIONS
)
}
fn
check_fn
(
&
mut
self
,
cx
:
&
Context
,
...
...
@@ -886,14 +886,14 @@ fn check_ty_method(&mut self, cx: &Context, t: &ast::TypeMethod) {
}
}
declare_lint!
(
non_uppercase_statics
,
Allow
,
declare_lint!
(
NON_UPPERCASE_STATICS
,
Allow
,
"static constants should have uppercase identifiers"
)
pub
struct
NonUppercaseStatics
;
impl
LintPass
for
NonUppercaseStatics
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
non_uppercase_statics
)
lint_array!
(
NON_UPPERCASE_STATICS
)
}
fn
check_item
(
&
mut
self
,
cx
:
&
Context
,
it
:
&
ast
::
Item
)
{
...
...
@@ -905,7 +905,7 @@ fn check_item(&mut self, cx: &Context, it: &ast::Item) {
// ones (some scripts don't have a concept of
// upper/lowercase)
if
s
.get
()
.chars
()
.any
(|
c
|
c
.is_lowercase
())
{
cx
.span_lint
(
non_uppercase_statics
,
it
.span
,
cx
.span_lint
(
NON_UPPERCASE_STATICS
,
it
.span
,
format!
(
"static constant `{}` should have an uppercase name
\
such as `{}`"
,
s
.get
(),
s
.get
()
.chars
()
.map
(|
c
|
c
.to_uppercase
())
...
...
@@ -917,14 +917,14 @@ fn check_item(&mut self, cx: &Context, it: &ast::Item) {
}
}
declare_lint!
(
non_uppercase_pattern_statics
,
Warn
,
declare_lint!
(
NON_UPPERCASE_PATTERN_STATICS
,
Warn
,
"static constants in match patterns should be all caps"
)
pub
struct
NonUppercasePatternStatics
;
impl
LintPass
for
NonUppercasePatternStatics
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
non_uppercase_pattern_statics
)
lint_array!
(
NON_UPPERCASE_PATTERN_STATICS
)
}
fn
check_pat
(
&
mut
self
,
cx
:
&
Context
,
p
:
&
ast
::
Pat
)
{
...
...
@@ -935,7 +935,7 @@ fn check_pat(&mut self, cx: &Context, p: &ast::Pat) {
let
ident
=
path
.segments
.last
()
.unwrap
()
.identifier
;
let
s
=
token
::
get_ident
(
ident
);
if
s
.get
()
.chars
()
.any
(|
c
|
c
.is_lowercase
())
{
cx
.span_lint
(
non_uppercase_pattern_statics
,
path
.span
,
cx
.span_lint
(
NON_UPPERCASE_PATTERN_STATICS
,
path
.span
,
format!
(
"static constant in pattern `{}` should have an uppercase
\
name such as `{}`"
,
s
.get
(),
s
.get
()
.chars
()
.map
(|
c
|
c
.to_uppercase
())
...
...
@@ -947,14 +947,14 @@ fn check_pat(&mut self, cx: &Context, p: &ast::Pat) {
}
}
declare_lint!
(
uppercase_variables
,
Warn
,
declare_lint!
(
UPPERCASE_VARIABLES
,
Warn
,
"variable and structure field names should start with a lowercase character"
)
pub
struct
UppercaseVariables
;
impl
LintPass
for
UppercaseVariables
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
uppercase_variables
)
lint_array!
(
UPPERCASE_VARIABLES
)
}
fn
check_pat
(
&
mut
self
,
cx
:
&
Context
,
p
:
&
ast
::
Pat
)
{
...
...
@@ -967,7 +967,7 @@ fn check_pat(&mut self, cx: &Context, p: &ast::Pat) {
let
ident
=
path
.segments
.last
()
.unwrap
()
.identifier
;
let
s
=
token
::
get_ident
(
ident
);
if
s
.get
()
.len
()
>
0
&&
s
.get
()
.char_at
(
0
)
.is_uppercase
()
{
cx
.span_lint
(
uppercase_variables
,
path
.span
,
cx
.span_lint
(
UPPERCASE_VARIABLES
,
path
.span
,
"variable names should start with a lowercase character"
);
}
}
...
...
@@ -985,7 +985,7 @@ fn check_struct_def(&mut self, cx: &Context, s: &ast::StructDef,
ast
::
StructField_
{
kind
:
ast
::
NamedField
(
ident
,
_
),
..
}
=>
{
let
s
=
token
::
get_ident
(
ident
);
if
s
.get
()
.char_at
(
0
)
.is_uppercase
()
{
cx
.span_lint
(
uppercase_variables
,
sf
.span
,
cx
.span_lint
(
UPPERCASE_VARIABLES
,
sf
.span
,
"structure field names should start with a lowercase character"
);
}
}
...
...
@@ -995,7 +995,7 @@ fn check_struct_def(&mut self, cx: &Context, s: &ast::StructDef,
}
}
declare_lint!
(
unnecessary_parens
,
Warn
,
declare_lint!
(
UNNECESSARY_PARENS
,
Warn
,
"`if`, `match`, `while` and `return` do not need parentheses"
)
pub
struct
UnnecessaryParens
;
...
...
@@ -1004,7 +1004,7 @@ impl UnnecessaryParens {
fn
check_unnecessary_parens_core
(
&
self
,
cx
:
&
Context
,
value
:
&
ast
::
Expr
,
msg
:
&
str
)
{
match
value
.node
{
ast
::
ExprParen
(
_
)
=>
{
cx
.span_lint
(
unnecessary_parens
,
value
.span
,
cx
.span_lint
(
UNNECESSARY_PARENS
,
value
.span
,
format!
(
"unnecessary parentheses around {}"
,
msg
)
.as_slice
())
}
_
=>
{}
...
...
@@ -1014,7 +1014,7 @@ fn check_unnecessary_parens_core(&self, cx: &Context, value: &ast::Expr, msg: &s
impl
LintPass
for
UnnecessaryParens
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
unnecessary_parens
)
lint_array!
(
UNNECESSARY_PARENS
)
}
fn
check_expr
(
&
mut
self
,
cx
:
&
Context
,
e
:
&
ast
::
Expr
)
{
...
...
@@ -1045,14 +1045,14 @@ fn check_stmt(&mut self, cx: &Context, s: &ast::Stmt) {
}
}
declare_lint!
(
unused_unsafe
,
Warn
,
declare_lint!
(
UNUSED_UNSAFE
,
Warn
,
"unnecessary use of an `unsafe` block"
)
pub
struct
UnusedUnsafe
;
impl
LintPass
for
UnusedUnsafe
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
unused_unsafe
)
lint_array!
(
UNUSED_UNSAFE
)
}
fn
check_expr
(
&
mut
self
,
cx
:
&
Context
,
e
:
&
ast
::
Expr
)
{
...
...
@@ -1061,7 +1061,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
ast
::
ExprBlock
(
ref
blk
)
=>
{
if
blk
.rules
==
ast
::
UnsafeBlock
(
ast
::
UserProvided
)
&&
!
cx
.tcx.used_unsafe
.borrow
()
.contains
(
&
blk
.id
)
{
cx
.span_lint
(
unused_unsafe
,
blk
.span
,
"unnecessary `unsafe` block"
);
cx
.span_lint
(
UNUSED_UNSAFE
,
blk
.span
,
"unnecessary `unsafe` block"
);
}
}
_
=>
()
...
...
@@ -1069,28 +1069,28 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
}
}
declare_lint!
(
unsafe_block
,
Allow
,
declare_lint!
(
UNSAFE_BLOCK
,
Allow
,
"usage of an `unsafe` block"
)
pub
struct
UnsafeBlock
;
impl
LintPass
for
UnsafeBlock
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
unsafe_block
)
lint_array!
(
UNSAFE_BLOCK
)
}
fn
check_expr
(
&
mut
self
,
cx
:
&
Context
,
e
:
&
ast
::
Expr
)
{
match
e
.node
{
// Don't warn about generated blocks, that'll just pollute the output.
ast
::
ExprBlock
(
ref
blk
)
if
blk
.rules
==
ast
::
UnsafeBlock
(
ast
::
UserProvided
)
=>
{
cx
.span_lint
(
unsafe_block
,
blk
.span
,
"usage of an `unsafe` block"
);
cx
.span_lint
(
UNSAFE_BLOCK
,
blk
.span
,
"usage of an `unsafe` block"
);
}
_
=>
()
}
}
}
declare_lint!
(
unused_mut
,
Warn
,
declare_lint!
(
UNUSED_MUT
,
Warn
,
"detect mut variables which don't need to be mutable"
)
pub
struct
UnusedMut
;
...
...
@@ -1124,7 +1124,7 @@ fn check_unused_mut_pat(&self, cx: &Context, pats: &[@ast::Pat]) {
let
used_mutables
=
cx
.tcx.used_mut_nodes
.borrow
();
for
(
_
,
v
)
in
mutables
.iter
()
{
if
!
v
.iter
()
.any
(|
e
|
used_mutables
.contains
(
e
))
{
cx
.span_lint
(
unused_mut
,
cx
.tcx.map
.span
(
*
v
.get
(
0
)),
cx
.span_lint
(
UNUSED_MUT
,
cx
.tcx.map
.span
(
*
v
.get
(
0
)),
"variable does not need to be mutable"
);
}
}
...
...
@@ -1133,7 +1133,7 @@ fn check_unused_mut_pat(&self, cx: &Context, pats: &[@ast::Pat]) {
impl
LintPass
for
UnusedMut
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
unused_mut
)
lint_array!
(
UNUSED_MUT
)
}
fn
check_expr
(
&
mut
self
,
cx
:
&
Context
,
e
:
&
ast
::
Expr
)
{
...
...
@@ -1175,14 +1175,14 @@ enum Allocation {
BoxAllocation
}
declare_lint!
(
unnecessary_allocation
,
Warn
,
declare_lint!
(
UNNECESSARY_ALLOCATION
,
Warn
,
"detects unnecessary allocations that can be eliminated"
)
pub
struct
UnnecessaryAllocation
;
impl
LintPass
for
UnnecessaryAllocation
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
unnecessary_allocation
)
lint_array!
(
UNNECESSARY_ALLOCATION
)
}
fn
check_expr
(
&
mut
self
,
cx
:
&
Context
,
e
:
&
ast
::
Expr
)
{
...
...
@@ -1210,17 +1210,17 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
ty
::
AutoDerefRef
(
ty
::
AutoDerefRef
{
autoref
,
..
})
=>
{
match
(
allocation
,
autoref
)
{
(
VectorAllocation
,
Some
(
ty
::
AutoBorrowVec
(
..
)))
=>
{
cx
.span_lint
(
unnecessary_allocation
,
e
.span
,
cx
.span_lint
(
UNNECESSARY_ALLOCATION
,
e
.span
,
"unnecessary allocation, the sigil can be removed"
);
}
(
BoxAllocation
,
Some
(
ty
::
AutoPtr
(
_
,
ast
::
MutImmutable
)))
=>
{
cx
.span_lint
(
unnecessary_allocation
,
e
.span
,
cx
.span_lint
(
UNNECESSARY_ALLOCATION
,
e
.span
,
"unnecessary allocation, use & instead"
);
}
(
BoxAllocation
,
Some
(
ty
::
AutoPtr
(
_
,
ast
::
MutMutable
)))
=>
{
cx
.span_lint
(
unnecessary_allocation
,
e
.span
,
cx
.span_lint
(
UNNECESSARY_ALLOCATION
,
e
.span
,
"unnecessary allocation, use &mut instead"
);
}
_
=>
()
...
...
@@ -1234,7 +1234,7 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
}
}
declare_lint!
(
missing_doc
,
Allow
,
declare_lint!
(
MISSING_DOC
,
Allow
,
"detects missing documentation for public members"
)
pub
struct
MissingDoc
{
...
...
@@ -1291,7 +1291,7 @@ fn check_missing_doc_attrs(&self,
}
});
if
!
has_doc
{
cx
.span_lint
(
missing_doc
,
sp
,
cx
.span_lint
(
MISSING_DOC
,
sp
,
format!
(
"missing documentation for {}"
,
desc
)
.as_slice
());
}
}
...
...
@@ -1299,7 +1299,7 @@ fn check_missing_doc_attrs(&self,
impl
LintPass
for
MissingDoc
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
missing_doc
)
lint_array!
(
MISSING_DOC
)
}
fn
enter_lint_attrs
(
&
mut
self
,
_
:
&
Context
,
attrs
:
&
[
ast
::
Attribute
])
{
...
...
@@ -1388,13 +1388,13 @@ fn check_variant(&mut self, cx: &Context, v: &ast::Variant, _: &ast::Generics) {
}
}
declare_lint!
(
deprecated
,
Warn
,
declare_lint!
(
DEPRECATED
,
Warn
,
"detects use of #[deprecated] items"
)
declare_lint!
(
experimental
,
Warn
,
declare_lint!
(
EXPERIMENTAL
,
Warn
,
"detects use of #[experimental] items"
)
declare_lint!
(
unstable
,
Allow
,
declare_lint!
(
UNSTABLE
,
Allow
,
"detects use of #[unstable] items (incl. items with no stability attribute)"
)
/// Checks for use of items with `#[deprecated]`, `#[experimental]` and
...
...
@@ -1403,7 +1403,7 @@ fn check_variant(&mut self, cx: &Context, v: &ast::Variant, _: &ast::Generics) {
impl
LintPass
for
Stability
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
deprecated
,
experimental
,
unstable
)
lint_array!
(
DEPRECATED
,
EXPERIMENTAL
,
UNSTABLE
)
}
fn
check_expr
(
&
mut
self
,
cx
:
&
Context
,
e
:
&
ast
::
Expr
)
{
...
...
@@ -1474,13 +1474,13 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
let
(
lint
,
label
)
=
match
stability
{
// no stability attributes == Unstable
None
=>
(
unstable
,
"unmarked"
),
None
=>
(
UNSTABLE
,
"unmarked"
),
Some
(
attr
::
Stability
{
level
:
attr
::
Unstable
,
..
})
=>
(
unstable
,
"unstable"
),
(
UNSTABLE
,
"unstable"
),
Some
(
attr
::
Stability
{
level
:
attr
::
Experimental
,
..
})
=>
(
experimental
,
"experimental"
),
(
EXPERIMENTAL
,
"experimental"
),
Some
(
attr
::
Stability
{
level
:
attr
::
Deprecated
,
..
})
=>
(
deprecated
,
"deprecated"
),
(
DEPRECATED
,
"deprecated"
),
_
=>
return
};
...
...
@@ -1495,40 +1495,40 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
}
}
declare_lint!
(
pub
unused_imports
,
Warn
,
declare_lint!
(
pub
UNUSED_IMPORTS
,
Warn
,
"imports that are never used"
)
declare_lint!
(
pub
unnecessary_qualification
,
Allow
,
declare_lint!
(
pub
UNNECESSARY_QUALIFICATION
,
Allow
,
"detects unnecessarily qualified names"
)
declare_lint!
(
pub
unrecognized_lint
,
Warn
,
declare_lint!
(
pub
UNRECOGNIZED_LINT
,
Warn
,
"unrecognized lint attribute"
)
declare_lint!
(
pub
unused_variable
,
Warn
,
declare_lint!
(
pub
UNUSED_VARIABLE
,
Warn
,
"detect variables which are not used in any way"
)
declare_lint!
(
pub
dead_assignment
,
Warn
,
declare_lint!
(
pub
DEAD_ASSIGNMENT
,
Warn
,
"detect assignments that will never be read"
)
declare_lint!
(
pub
dead_code
,
Warn
,
declare_lint!
(
pub
DEAD_CODE
,
Warn
,
"detect piece of code that will never be used"
)
declare_lint!
(
pub
visible_private_types
,
Warn
,
declare_lint!
(
pub
VISIBLE_PRIVATE_TYPES
,
Warn
,
"detect use of private types in exported type signatures"
)
declare_lint!
(
pub
unreachable_code
,
Warn
,
declare_lint!
(
pub
UNREACHABLE_CODE
,
Warn
,
"detects unreachable code"
)
declare_lint!
(
pub
warnings
,
Warn
,
declare_lint!
(
pub
WARNINGS
,
Warn
,
"mass-change the level for lints which produce warnings"
)
declare_lint!
(
pub
unknown_features
,
Deny
,
declare_lint!
(
pub
UNKNOWN_FEATURES
,
Deny
,
"unknown features found in crate-level #[feature] directives"
)
declare_lint!
(
pub
unknown_crate_type
,
Deny
,
declare_lint!
(
pub
UNKNOWN_CRATE_TYPE
,
Deny
,
"unknown crate type found in #[crate_type] directive"
)
declare_lint!
(
pub
variant_size_difference
,
Allow
,
declare_lint!
(
pub
VARIANT_SIZE_DIFFERENCE
,
Allow
,
"detects enums with widely varying variant sizes"
)
/// Does nothing as a lint pass, but registers some `Lint`s
...
...
@@ -1538,9 +1538,9 @@ fn check_expr(&mut self, cx: &Context, e: &ast::Expr) {
impl
LintPass
for
HardwiredLints
{
fn
get_lints
(
&
self
)
->
LintArray
{
lint_array!
(
unused_imports
,
unnecessary_qualification
,
unrecognized_lint
,
unused_variable
,
dead_assignment
,
dead_code
,
visible_private_types
,
unreachable_code
,
warnings
,
unknown_features
,
unknown_crate_type
,
variant_size_difference
)
UNUSED_IMPORTS
,
UNNECESSARY_QUALIFICATION
,
UNRECOGNIZED_LINT
,
UNUSED_VARIABLE
,
DEAD_ASSIGNMENT
,
DEAD_CODE
,
VISIBLE_PRIVATE_TYPES
,
UNREACHABLE_CODE
,
WARNINGS
,
UNKNOWN_FEATURES
,
UNKNOWN_CRATE_TYPE
,
VARIANT_SIZE_DIFFERENCE
)
}
}
src/librustc/lint/context.rs
浏览文件 @
b5542f7f
...
...
@@ -264,7 +264,7 @@ fn lookup_and_emit(&self, lint: &'static Lint, span: Option<Span>, msg: &str) {
let
(
level
,
src
)
=
match
self
.lints.levels
.find
(
&
LintId
::
of
(
lint
))
{
None
=>
return
,
Some
(
&
(
Warn
,
src
))
=>
{
let
lint_id
=
LintId
::
of
(
builtin
::
warnings
);
let
lint_id
=
LintId
::
of
(
builtin
::
WARNINGS
);
(
self
.lints
.get_level_source
(
lint_id
)
.val0
(),
src
)
}
Some
(
&
pair
)
=>
pair
,
...
...
@@ -359,7 +359,7 @@ fn gather_lint_attrs(&mut self, attrs: &[ast::Attribute]) -> Vec<(LintId, Level,
match
self
.lints.by_name
.find_equiv
(
&
lint_name
.get
())
{
Some
(
lint_id
)
=>
out
.push
((
*
lint_id
,
level
,
meta
.span
)),
None
=>
self
.span_lint
(
builtin
::
unrecognized_lint
,
None
=>
self
.span_lint
(
builtin
::
UNRECOGNIZED_LINT
,
meta
.span
,
format!
(
"unknown `{}` attribute: `{}`"
,
level
.as_str
(),
lint_name
)
.as_slice
()),
...
...
@@ -588,7 +588,7 @@ fn get_lints(&self) -> LintArray {
fn
check_item
(
&
mut
self
,
cx
:
&
Context
,
it
:
&
ast
::
Item
)
{
match
it
.node
{
ast
::
ItemEnum
(
..
)
=>
{
let
lint_id
=
LintId
::
of
(
builtin
::
variant_size_difference
);
let
lint_id
=
LintId
::
of
(
builtin
::
VARIANT_SIZE_DIFFERENCE
);
match
cx
.lints
.get_level_source
(
lint_id
)
{
lvlsrc
@
(
lvl
,
_
)
if
lvl
!=
Allow
=>
{
cx
.node_levels
.borrow_mut
()
...
...
src/librustc/middle/dead.rs
浏览文件 @
b5542f7f
...
...
@@ -461,7 +461,7 @@ fn warn_dead_code(&mut self,
ident
:
ast
::
Ident
)
{
self
.tcx
.sess
.add_lint
(
lint
::
builtin
::
dead_code
,
.add_lint
(
lint
::
builtin
::
DEAD_CODE
,
id
,
span
,
format!
(
"code is never used: `{}`"
,
...
...
src/librustc/middle/liveness.rs
浏览文件 @
b5542f7f
...
...
@@ -1560,11 +1560,11 @@ fn warn_about_unused(&self,
};
if
is_assigned
{
self
.ir.tcx.sess
.add_lint
(
lint
::
builtin
::
unused_variable
,
id
,
sp
,
self
.ir.tcx.sess
.add_lint
(
lint
::
builtin
::
UNUSED_VARIABLE
,
id
,
sp
,
format!
(
"variable `{}` is assigned to, but never used"
,
*
name
));
}
else
{
self
.ir.tcx.sess
.add_lint
(
lint
::
builtin
::
unused_variable
,
id
,
sp
,
self
.ir.tcx.sess
.add_lint
(
lint
::
builtin
::
UNUSED_VARIABLE
,
id
,
sp
,
format!
(
"unused variable: `{}`"
,
*
name
));
}
}
...
...
@@ -1582,7 +1582,7 @@ fn warn_about_dead_assign(&self,
if
self
.live_on_exit
(
ln
,
var
)
.is_none
()
{
let
r
=
self
.should_warn
(
var
);
for
name
in
r
.iter
()
{
self
.ir.tcx.sess
.add_lint
(
lint
::
builtin
::
dead_assignment
,
id
,
sp
,
self
.ir.tcx.sess
.add_lint
(
lint
::
builtin
::
DEAD_ASSIGNMENT
,
id
,
sp
,
format!
(
"value assigned to `{}` is never read"
,
*
name
));
}
}
...
...
src/librustc/middle/privacy.rs
浏览文件 @
b5542f7f
...
...
@@ -1394,7 +1394,7 @@ fn visit_ty(&mut self, t: &ast::Ty, _: ()) {
ast
::
TyPath
(
ref
p
,
_
,
path_id
)
=>
{
if
self
.path_is_private_type
(
path_id
)
{
self
.tcx.sess
.add_lint
(
lint
::
builtin
::
visible_private_types
,
lint
::
builtin
::
VISIBLE_PRIVATE_TYPES
,
path_id
,
p
.span
,
"private type in exported type
\
signature"
.to_string
());
...
...
src/librustc/middle/resolve.rs
浏览文件 @
b5542f7f
...
...
@@ -4632,7 +4632,7 @@ fn resolve_path(&mut self,
match
(
def
,
unqualified_def
)
{
(
Some
((
d
,
_
)),
Some
((
ud
,
_
)))
if
d
==
ud
=>
{
self
.session
.add_lint
(
lint
::
builtin
::
unnecessary_qualification
,
.add_lint
(
lint
::
builtin
::
UNNECESSARY_QUALIFICATION
,
id
,
path
.span
,
"unnecessary qualification"
.to_string
());
...
...
@@ -5487,7 +5487,7 @@ fn check_for_item_unused_imports(&mut self, vi: &ViewItem) {
if
!
self
.used_imports
.contains
(
&
(
id
,
TypeNS
))
&&
!
self
.used_imports
.contains
(
&
(
id
,
ValueNS
))
{
self
.session
.add_lint
(
lint
::
builtin
::
unused_imports
,
.add_lint
(
lint
::
builtin
::
UNUSED_IMPORTS
,
id
,
p
.span
,
"unused import"
.to_string
());
...
...
@@ -5511,7 +5511,7 @@ fn finalize_import(&mut self, id: NodeId, span: Span) {
if
!
self
.used_imports
.contains
(
&
(
id
,
TypeNS
))
&&
!
self
.used_imports
.contains
(
&
(
id
,
ValueNS
))
{
self
.session
.add_lint
(
lint
::
builtin
::
unused_imports
,
self
.session
.add_lint
(
lint
::
builtin
::
UNUSED_IMPORTS
,
id
,
span
,
"unused import"
.to_string
());
...
...
src/librustc/middle/trans/base.rs
浏览文件 @
b5542f7f
...
...
@@ -1553,7 +1553,7 @@ fn enum_variant_size_lint(ccx: &CrateContext, enum_def: &ast::EnumDef, sp: Span,
let
mut
sizes
=
Vec
::
new
();
// does no allocation if no pushes, thankfully
let
levels
=
ccx
.tcx.node_lint_levels
.borrow
();
let
lint_id
=
lint
::
LintId
::
of
(
lint
::
builtin
::
variant_size_difference
);
let
lint_id
=
lint
::
LintId
::
of
(
lint
::
builtin
::
VARIANT_SIZE_DIFFERENCE
);
let
lvlsrc
=
match
levels
.find
(
&
(
id
,
lint_id
))
{
None
|
Some
(
&
(
lint
::
Allow
,
_
))
=>
return
,
Some
(
&
lvlsrc
)
=>
lvlsrc
,
...
...
@@ -1590,7 +1590,7 @@ fn enum_variant_size_lint(ccx: &CrateContext, enum_def: &ast::EnumDef, sp: Span,
if
largest
>
slargest
*
3
&&
slargest
>
0
{
// Use lint::raw_emit_lint rather than sess.add_lint because the lint-printing
// pass for the latter already ran.
lint
::
raw_emit_lint
(
&
ccx
.tcx
()
.sess
,
lint
::
builtin
::
variant_size_difference
,
lint
::
raw_emit_lint
(
&
ccx
.tcx
()
.sess
,
lint
::
builtin
::
VARIANT_SIZE_DIFFERENCE
,
lvlsrc
,
Some
(
sp
),
format!
(
"enum variant is more than three times larger
\
({} bytes) than the next largest (ignoring padding)"
,
...
...
src/librustc/middle/typeck/check/mod.rs
浏览文件 @
b5542f7f
...
...
@@ -3416,7 +3416,7 @@ pub fn check_block_with_expected(fcx: &FnCtxt,
fcx
.ccx
.tcx
.sess
.add_lint
(
lint
::
builtin
::
unreachable_code
,
.add_lint
(
lint
::
builtin
::
UNREACHABLE_CODE
,
s_id
,
s
.span
,
"unreachable statement"
.to_string
());
...
...
@@ -3443,7 +3443,7 @@ pub fn check_block_with_expected(fcx: &FnCtxt,
fcx
.ccx
.tcx
.sess
.add_lint
(
lint
::
builtin
::
unreachable_code
,
.add_lint
(
lint
::
builtin
::
UNREACHABLE_CODE
,
e
.id
,
e
.span
,
"unreachable expression"
.to_string
());
...
...
src/librustdoc/core.rs
浏览文件 @
b5542f7f
...
...
@@ -75,7 +75,7 @@ fn get_ast_and_resolve(cpath: &Path, libs: HashSet<Path>, cfgs: Vec<String>)
let
input
=
FileInput
(
cpath
.clone
());
let
warning_lint
=
lint
::
builtin
::
warnings
.name
.to_string
();
let
warning_lint
=
lint
::
builtin
::
WARNINGS
.name_lower
();
let
sessopts
=
driver
::
config
::
Options
{
maybe_sysroot
:
Some
(
os
::
self_exe_path
()
.unwrap
()
.dir_path
()),
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录