Skip to content

Commit 1bc4d5b

Browse files
committed
Reintroduce extern crate for non-Cargo dependencies.
1 parent 4aaef72 commit 1bc4d5b

File tree

130 files changed

+719
-693
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

130 files changed

+719
-693
lines changed

clippy_lints/src/approx_const.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use crate::utils::span_lint;
2-
use rustc::hir::*;
3-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
4-
use rustc::{declare_tool_lint, lint_array};
2+
use crate::rustc::hir::*;
3+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
4+
use crate::rustc::{declare_tool_lint, lint_array};
55
use std::f64::consts as f64;
6-
use syntax::ast::{FloatTy, Lit, LitKind};
7-
use syntax::symbol;
6+
use crate::syntax::ast::{FloatTy, Lit, LitKind};
7+
use crate::syntax::symbol;
88

99
/// **What it does:** Checks for floating point literals that approximate
1010
/// constants which are defined in

clippy_lints/src/arithmetic.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use crate::utils::span_lint;
2-
use rustc::hir;
3-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
4-
use rustc::{declare_tool_lint, lint_array};
5-
use syntax::source_map::Span;
2+
use crate::rustc::hir;
3+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
4+
use crate::rustc::{declare_tool_lint, lint_array};
5+
use crate::syntax::source_map::Span;
66

77
/// **What it does:** Checks for plain integer arithmetic.
88
///

clippy_lints/src/assign_ops.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
use crate::utils::{get_trait_def_id, implements_trait, snippet_opt, span_lint_and_then, SpanlessEq};
22
use crate::utils::{higher, sugg};
3-
use rustc::hir;
4-
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
5-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
6-
use rustc::{declare_tool_lint, lint_array};
3+
use crate::rustc::hir;
4+
use crate::rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
5+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
6+
use crate::rustc::{declare_tool_lint, lint_array};
77
use if_chain::if_chain;
8-
use syntax::ast;
8+
use crate::syntax::ast;
99

1010
/// **What it does:** Checks for `a = a op b` or `a = b commutative_op a`
1111
/// patterns.
@@ -220,7 +220,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for AssignOps {
220220
}
221221

222222
fn is_commutative(op: hir::BinOpKind) -> bool {
223-
use rustc::hir::BinOpKind::*;
223+
use crate::rustc::hir::BinOpKind::*;
224224
match op {
225225
Add | Mul | And | Or | BitXor | BitAnd | BitOr | Eq | Ne => true,
226226
Sub | Div | Rem | Shl | Shr | Lt | Le | Ge | Gt => false,

clippy_lints/src/attrs.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ use crate::utils::{
55
in_macro, last_line_of_span, match_def_path, opt_def_id, paths, snippet_opt, span_lint, span_lint_and_then,
66
without_block_comments,
77
};
8-
use rustc::hir::*;
9-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
10-
use rustc::{declare_tool_lint, lint_array};
8+
use crate::rustc::hir::*;
9+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
10+
use crate::rustc::{declare_tool_lint, lint_array};
1111
use if_chain::if_chain;
12-
use rustc::ty::{self, TyCtxt};
12+
use crate::rustc::ty::{self, TyCtxt};
1313
use semver::Version;
14-
use syntax::ast::{AttrStyle, Attribute, Lit, LitKind, MetaItemKind, NestedMetaItem, NestedMetaItemKind};
15-
use syntax::source_map::Span;
14+
use crate::syntax::ast::{AttrStyle, Attribute, Lit, LitKind, MetaItemKind, NestedMetaItem, NestedMetaItemKind};
15+
use crate::syntax::source_map::Span;
1616

1717
/// **What it does:** Checks for items annotated with `#[inline(always)]`,
1818
/// unless the annotated function is empty or simply panics.

clippy_lints/src/bit_mask.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
use rustc::hir::*;
2-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
3-
use rustc::{declare_tool_lint, lint_array};
1+
use crate::rustc::hir::*;
2+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
3+
use crate::rustc::{declare_tool_lint, lint_array};
44
use if_chain::if_chain;
5-
use syntax::ast::LitKind;
6-
use syntax::source_map::Span;
5+
use crate::syntax::ast::LitKind;
6+
use crate::syntax::source_map::Span;
77
use crate::utils::{span_lint, span_lint_and_then};
88
use crate::utils::sugg::Sugg;
99
use crate::consts::{constant, Constant};

clippy_lints/src/blacklisted_name.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
2-
use rustc::{declare_tool_lint, lint_array};
3-
use rustc::hir::*;
1+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
2+
use crate::rustc::{declare_tool_lint, lint_array};
3+
use crate::rustc::hir::*;
44
use crate::utils::span_lint;
55

66
/// **What it does:** Checks for usage of blacklisted names for variables, such

clippy_lints/src/block_in_if_condition.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use matches::matches;
2-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
3-
use rustc::{declare_tool_lint, lint_array};
4-
use rustc::hir::*;
5-
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
2+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
3+
use crate::rustc::{declare_tool_lint, lint_array};
4+
use crate::rustc::hir::*;
5+
use crate::rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
66
use crate::utils::*;
77

88
/// **What it does:** Checks for `if` conditions that use blocks to contain an

clippy_lints/src/booleans.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
2-
use rustc::{declare_tool_lint, lint_array};
3-
use rustc::hir::*;
4-
use rustc::hir::intravisit::*;
5-
use syntax::ast::{LitKind, NodeId, DUMMY_NODE_ID};
6-
use syntax::source_map::{dummy_spanned, Span, DUMMY_SP};
7-
use rustc_data_structures::thin_vec::ThinVec;
1+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
2+
use crate::rustc::{declare_tool_lint, lint_array};
3+
use crate::rustc::hir::*;
4+
use crate::rustc::hir::intravisit::*;
5+
use crate::syntax::ast::{LitKind, NodeId, DUMMY_NODE_ID};
6+
use crate::syntax::source_map::{dummy_spanned, Span, DUMMY_SP};
7+
use crate::rustc_data_structures::thin_vec::ThinVec;
88
use crate::utils::{in_macro, paths, match_type, snippet_opt, span_lint_and_then, SpanlessEq, get_trait_def_id, implements_trait};
99

1010
/// **What it does:** Checks for boolean expressions that can be written more

clippy_lints/src/bytecount.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
use rustc::hir::*;
2-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
3-
use rustc::{declare_tool_lint, lint_array};
1+
use crate::rustc::hir::*;
2+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
3+
use crate::rustc::{declare_tool_lint, lint_array};
44
use if_chain::if_chain;
5-
use rustc::ty;
6-
use syntax::ast::{Name, UintTy};
5+
use crate::rustc::ty;
6+
use crate::syntax::ast::{Name, UintTy};
77
use crate::utils::{contains_name, get_pat_name, match_type, paths, single_segment_path, snippet, span_lint_and_sugg,
88
walk_ptrs_ty};
99

clippy_lints/src/collapsible_if.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,10 @@
1212
//!
1313
//! This lint is **warn** by default
1414
15-
use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass};
16-
use rustc::{declare_tool_lint, lint_array};
15+
use crate::rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass};
16+
use crate::rustc::{declare_tool_lint, lint_array};
1717
use if_chain::if_chain;
18-
use syntax::ast;
18+
use crate::syntax::ast;
1919

2020
use crate::utils::{in_macro, snippet_block, span_lint_and_sugg, span_lint_and_then};
2121
use crate::utils::sugg::Sugg;

clippy_lints/src/const_static_lifetime.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use syntax::ast::*;
2-
use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass};
3-
use rustc::{declare_tool_lint, lint_array};
1+
use crate::syntax::ast::*;
2+
use crate::rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass};
3+
use crate::rustc::{declare_tool_lint, lint_array};
44
use crate::utils::{in_macro, snippet, span_lint_and_then};
55

66
/// **What it does:** Checks for constants with an explicit `'static` lifetime.

clippy_lints/src/consts.rs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
#![allow(clippy::float_cmp)]
22

3-
use rustc::lint::LateContext;
4-
use rustc::{span_bug, bug};
5-
use rustc::hir::def::Def;
6-
use rustc::hir::*;
7-
use rustc::ty::{self, Ty, TyCtxt, Instance};
8-
use rustc::ty::subst::{Subst, Substs};
3+
use crate::rustc::lint::LateContext;
4+
use crate::rustc::{span_bug, bug};
5+
use crate::rustc::hir::def::Def;
6+
use crate::rustc::hir::*;
7+
use crate::rustc::ty::{self, Ty, TyCtxt, Instance};
8+
use crate::rustc::ty::subst::{Subst, Substs};
99
use std::cmp::Ordering::{self, Equal};
1010
use std::cmp::PartialOrd;
1111
use std::hash::{Hash, Hasher};
1212
use std::mem;
1313
use std::rc::Rc;
14-
use syntax::ast::{FloatTy, LitKind};
15-
use syntax::ptr::P;
14+
use crate::syntax::ast::{FloatTy, LitKind};
15+
use crate::syntax::ptr::P;
1616
use crate::utils::{sext, unsext, clip};
1717

1818
/// A `LitKind`-like enum to fold constant `Expr`s into.
@@ -139,7 +139,7 @@ impl Constant {
139139

140140
/// parse a `LitKind` to a `Constant`
141141
pub fn lit_to_constant<'tcx>(lit: &LitKind, ty: Ty<'tcx>) -> Constant {
142-
use syntax::ast::*;
142+
use crate::syntax::ast::*;
143143

144144
match *lit {
145145
LitKind::Str(ref is, _) => Constant::Str(is.to_string()),
@@ -279,7 +279,7 @@ impl<'c, 'cc> ConstEvalLateContext<'c, 'cc> {
279279
instance,
280280
promoted: None,
281281
};
282-
use rustc::mir::interpret::GlobalId;
282+
use crate::rustc::mir::interpret::GlobalId;
283283
let result = self.tcx.const_eval(self.param_env.and(gid)).ok()?;
284284
let ret = miri_to_const(self.tcx, result);
285285
if ret.is_some() {
@@ -409,7 +409,7 @@ impl<'c, 'cc> ConstEvalLateContext<'c, 'cc> {
409409
}
410410

411411
pub fn miri_to_const<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, result: &ty::Const<'tcx>) -> Option<Constant> {
412-
use rustc::mir::interpret::{Scalar, ScalarMaybeUndef, ConstValue};
412+
use crate::rustc::mir::interpret::{Scalar, ScalarMaybeUndef, ConstValue};
413413
match result.val {
414414
ConstValue::Scalar(Scalar::Bits{ bits: b, ..}) => match result.ty.sty {
415415
ty::Bool => Some(Constant::Bool(b == 1)),

clippy_lints/src/copies.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
2-
use rustc::{declare_tool_lint, lint_array};
3-
use rustc::ty::Ty;
4-
use rustc::hir::*;
5-
use rustc_data_structures::fx::FxHashMap;
1+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
2+
use crate::rustc::{declare_tool_lint, lint_array};
3+
use crate::rustc::ty::Ty;
4+
use crate::rustc::hir::*;
5+
use crate::rustc_data_structures::fx::FxHashMap;
66
use std::collections::hash_map::Entry;
77
use std::hash::BuildHasherDefault;
8-
use syntax::symbol::LocalInternedString;
9-
use rustc_data_structures::small_vec::OneVector;
8+
use crate::syntax::symbol::LocalInternedString;
9+
use crate::rustc_data_structures::small_vec::OneVector;
1010
use crate::utils::{SpanlessEq, SpanlessHash};
1111
use crate::utils::{get_parent_expr, in_macro, snippet, span_lint_and_then, span_note_and_lint};
1212

clippy_lints/src/copy_iterator.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::utils::{is_copy, match_path, paths, span_note_and_lint};
2-
use rustc::hir::{Item, ItemKind};
3-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
4-
use rustc::{declare_tool_lint, lint_array};
2+
use crate::rustc::hir::{Item, ItemKind};
3+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
4+
use crate::rustc::{declare_tool_lint, lint_array};
55

66
/// **What it does:** Checks for types that implement `Copy` as well as
77
/// `Iterator`.

clippy_lints/src/cyclomatic_complexity.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
//! calculate cyclomatic complexity and warn about overly complex functions
22
3-
use rustc::cfg::CFG;
4-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass, LintContext};
5-
use rustc::{declare_tool_lint, lint_array};
6-
use rustc::hir::*;
7-
use rustc::ty;
8-
use rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
9-
use syntax::ast::{Attribute, NodeId};
10-
use syntax::source_map::Span;
3+
use crate::rustc::cfg::CFG;
4+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass, LintContext};
5+
use crate::rustc::{declare_tool_lint, lint_array};
6+
use crate::rustc::hir::*;
7+
use crate::rustc::ty;
8+
use crate::rustc::hir::intravisit::{walk_expr, NestedVisitorMap, Visitor};
9+
use crate::syntax::ast::{Attribute, NodeId};
10+
use crate::syntax::source_map::Span;
1111

1212
use crate::utils::{in_macro, is_allowed, match_type, paths, span_help_and_lint, LimitStack};
1313

clippy_lints/src/default_trait_access.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use rustc::hir::*;
2-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
3-
use rustc::{declare_tool_lint, lint_array};
1+
use crate::rustc::hir::*;
2+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
3+
use crate::rustc::{declare_tool_lint, lint_array};
44
use if_chain::if_chain;
5-
use rustc::ty::TyKind;
5+
use crate::rustc::ty::TyKind;
66

77
use crate::utils::{any_parent_is_automatically_derived, match_def_path, opt_def_id, paths, span_lint_and_sugg};
88

clippy_lints/src/derive.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
2-
use rustc::{declare_tool_lint, lint_array};
1+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
2+
use crate::rustc::{declare_tool_lint, lint_array};
33
use if_chain::if_chain;
4-
use rustc::ty::{self, Ty};
5-
use rustc::hir::*;
6-
use syntax::source_map::Span;
4+
use crate::rustc::ty::{self, Ty};
5+
use crate::rustc::hir::*;
6+
use crate::syntax::source_map::Span;
77
use crate::utils::paths;
88
use crate::utils::{is_automatically_derived, is_copy, match_path, span_lint_and_then};
99

clippy_lints/src/doc.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use itertools::Itertools;
22
use pulldown_cmark;
3-
use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass};
4-
use rustc::{declare_tool_lint, lint_array};
5-
use syntax::ast;
6-
use syntax::source_map::{BytePos, Span};
7-
use syntax_pos::Pos;
3+
use crate::rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass};
4+
use crate::rustc::{declare_tool_lint, lint_array};
5+
use crate::syntax::ast;
6+
use crate::syntax::source_map::{BytePos, Span};
7+
use crate::syntax_pos::Pos;
88
use crate::utils::span_lint;
99
use url::Url;
1010

clippy_lints/src/double_comparison.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
//! Lint on unnecessary double comparisons. Some examples:
22
3-
use rustc::hir::*;
4-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
5-
use rustc::{declare_tool_lint, lint_array};
6-
use syntax::source_map::Span;
3+
use crate::rustc::hir::*;
4+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
5+
use crate::rustc::{declare_tool_lint, lint_array};
6+
use crate::syntax::source_map::Span;
77

88
use crate::utils::{snippet, span_lint_and_sugg, SpanlessEq};
99

clippy_lints/src/double_parens.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
use syntax::ast::*;
2-
use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintContext, LintPass};
3-
use rustc::{declare_tool_lint, lint_array};
1+
use crate::syntax::ast::*;
2+
use crate::rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintContext, LintPass};
3+
use crate::rustc::{declare_tool_lint, lint_array};
44

55
/// **What it does:** Checks for unnecessary double parentheses.
66
///

clippy_lints/src/drop_forget_ref.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
2-
use rustc::{declare_tool_lint, lint_array};
1+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
2+
use crate::rustc::{declare_tool_lint, lint_array};
33
use if_chain::if_chain;
4-
use rustc::ty;
5-
use rustc::hir::*;
4+
use crate::rustc::ty;
5+
use crate::rustc::hir::*;
66
use crate::utils::{is_copy, match_def_path, opt_def_id, paths, span_note_and_lint};
77

88
/// **What it does:** Checks for calls to `std::mem::drop` with a reference

clippy_lints/src/duration_subsec.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use rustc::hir::*;
2-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
3-
use rustc::{declare_tool_lint, lint_array};
1+
use crate::rustc::hir::*;
2+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
3+
use crate::rustc::{declare_tool_lint, lint_array};
44
use if_chain::if_chain;
5-
use syntax::source_map::Spanned;
5+
use crate::syntax::source_map::Spanned;
66

77
use crate::consts::{constant, Constant};
88
use crate::utils::paths;

clippy_lints/src/else_if_without_else.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
//! lint on if expressions with an else if, but without a final else branch
22
3-
use rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass, in_external_macro, LintContext};
4-
use rustc::{declare_tool_lint, lint_array};
5-
use syntax::ast::*;
3+
use crate::rustc::lint::{EarlyContext, EarlyLintPass, LintArray, LintPass, in_external_macro, LintContext};
4+
use crate::rustc::{declare_tool_lint, lint_array};
5+
use crate::syntax::ast::*;
66

77
use crate::utils::span_lint_and_sugg;
88

clippy_lints/src/empty_enum.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
//! lint when there is an enum with no variants
22
3-
use rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
4-
use rustc::{declare_tool_lint, lint_array};
5-
use rustc::hir::*;
3+
use crate::rustc::lint::{LateContext, LateLintPass, LintArray, LintPass};
4+
use crate::rustc::{declare_tool_lint, lint_array};
5+
use crate::rustc::hir::*;
66
use crate::utils::span_lint_and_then;
77

88
/// **What it does:** Checks for `enum`s with no variants.

0 commit comments

Comments
 (0)