Skip to content

Commit 4c43631

Browse files
committed
Introduce hir_ty
1 parent a443b50 commit 4c43631

File tree

7 files changed

+252
-190
lines changed

7 files changed

+252
-190
lines changed

Cargo.lock

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/ra_hir/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ mbe = { path = "../ra_mbe", package = "ra_mbe" }
2323
tt = { path = "../ra_tt", package = "ra_tt" }
2424
hir_expand = { path = "../ra_hir_expand", package = "ra_hir_expand" }
2525
hir_def = { path = "../ra_hir_def", package = "ra_hir_def" }
26+
hir_ty = { path = "../ra_hir_ty", package = "ra_hir_ty" }
2627
test_utils = { path = "../test_utils" }
2728
ra_prof = { path = "../ra_prof" }
2829

crates/ra_hir/src/ty/lower.rs

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ use std::iter;
99
use std::sync::Arc;
1010

1111
use hir_def::{
12-
builtin_type::{BuiltinFloat, BuiltinInt, BuiltinType},
12+
builtin_type::BuiltinType,
1313
generics::WherePredicate,
1414
path::{GenericArg, PathSegment},
1515
resolver::{HasResolver, Resolver, TypeNs},
@@ -27,7 +27,7 @@ use super::{
2727
use crate::{
2828
db::HirDatabase,
2929
ty::{
30-
primitive::{FloatTy, IntTy, Uncertain},
30+
primitive::{FloatTy, IntTy},
3131
Adt,
3232
},
3333
util::make_mut_slice,
@@ -679,36 +679,6 @@ fn type_for_builtin(def: BuiltinType) -> Ty {
679679
})
680680
}
681681

682-
impl From<BuiltinInt> for IntTy {
683-
fn from(t: BuiltinInt) -> Self {
684-
IntTy { signedness: t.signedness, bitness: t.bitness }
685-
}
686-
}
687-
688-
impl From<BuiltinFloat> for FloatTy {
689-
fn from(t: BuiltinFloat) -> Self {
690-
FloatTy { bitness: t.bitness }
691-
}
692-
}
693-
694-
impl From<Option<BuiltinInt>> for Uncertain<IntTy> {
695-
fn from(t: Option<BuiltinInt>) -> Self {
696-
match t {
697-
None => Uncertain::Unknown,
698-
Some(t) => Uncertain::Known(t.into()),
699-
}
700-
}
701-
}
702-
703-
impl From<Option<BuiltinFloat>> for Uncertain<FloatTy> {
704-
fn from(t: Option<BuiltinFloat>) -> Self {
705-
match t {
706-
None => Uncertain::Unknown,
707-
Some(t) => Uncertain::Known(t.into()),
708-
}
709-
}
710-
}
711-
712682
fn fn_sig_for_struct_constructor(db: &impl HirDatabase, def: StructId) -> FnSig {
713683
let struct_data = db.struct_data(def.into());
714684
let fields = struct_data.variant_data.fields();

crates/ra_hir/src/ty/primitive.rs

Lines changed: 1 addition & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -1,160 +1,3 @@
11
//! FIXME: write short doc here
22
3-
use std::fmt;
4-
5-
pub use hir_def::builtin_type::{FloatBitness, IntBitness, Signedness};
6-
7-
#[derive(Clone, Copy, Eq, PartialEq, Hash, Debug)]
8-
pub enum Uncertain<T> {
9-
Unknown,
10-
Known(T),
11-
}
12-
13-
impl From<IntTy> for Uncertain<IntTy> {
14-
fn from(ty: IntTy) -> Self {
15-
Uncertain::Known(ty)
16-
}
17-
}
18-
19-
impl fmt::Display for Uncertain<IntTy> {
20-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
21-
match *self {
22-
Uncertain::Unknown => write!(f, "{{integer}}"),
23-
Uncertain::Known(ty) => write!(f, "{}", ty),
24-
}
25-
}
26-
}
27-
28-
impl From<FloatTy> for Uncertain<FloatTy> {
29-
fn from(ty: FloatTy) -> Self {
30-
Uncertain::Known(ty)
31-
}
32-
}
33-
34-
impl fmt::Display for Uncertain<FloatTy> {
35-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
36-
match *self {
37-
Uncertain::Unknown => write!(f, "{{float}}"),
38-
Uncertain::Known(ty) => write!(f, "{}", ty),
39-
}
40-
}
41-
}
42-
43-
#[derive(Copy, Clone, Eq, PartialEq, Hash)]
44-
pub struct IntTy {
45-
pub signedness: Signedness,
46-
pub bitness: IntBitness,
47-
}
48-
49-
impl fmt::Debug for IntTy {
50-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
51-
fmt::Display::fmt(self, f)
52-
}
53-
}
54-
55-
impl fmt::Display for IntTy {
56-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
57-
write!(f, "{}", self.ty_to_string())
58-
}
59-
}
60-
61-
impl IntTy {
62-
pub fn isize() -> IntTy {
63-
IntTy { signedness: Signedness::Signed, bitness: IntBitness::Xsize }
64-
}
65-
66-
pub fn i8() -> IntTy {
67-
IntTy { signedness: Signedness::Signed, bitness: IntBitness::X8 }
68-
}
69-
70-
pub fn i16() -> IntTy {
71-
IntTy { signedness: Signedness::Signed, bitness: IntBitness::X16 }
72-
}
73-
74-
pub fn i32() -> IntTy {
75-
IntTy { signedness: Signedness::Signed, bitness: IntBitness::X32 }
76-
}
77-
78-
pub fn i64() -> IntTy {
79-
IntTy { signedness: Signedness::Signed, bitness: IntBitness::X64 }
80-
}
81-
82-
pub fn i128() -> IntTy {
83-
IntTy { signedness: Signedness::Signed, bitness: IntBitness::X128 }
84-
}
85-
86-
pub fn usize() -> IntTy {
87-
IntTy { signedness: Signedness::Unsigned, bitness: IntBitness::Xsize }
88-
}
89-
90-
pub fn u8() -> IntTy {
91-
IntTy { signedness: Signedness::Unsigned, bitness: IntBitness::X8 }
92-
}
93-
94-
pub fn u16() -> IntTy {
95-
IntTy { signedness: Signedness::Unsigned, bitness: IntBitness::X16 }
96-
}
97-
98-
pub fn u32() -> IntTy {
99-
IntTy { signedness: Signedness::Unsigned, bitness: IntBitness::X32 }
100-
}
101-
102-
pub fn u64() -> IntTy {
103-
IntTy { signedness: Signedness::Unsigned, bitness: IntBitness::X64 }
104-
}
105-
106-
pub fn u128() -> IntTy {
107-
IntTy { signedness: Signedness::Unsigned, bitness: IntBitness::X128 }
108-
}
109-
110-
pub(crate) fn ty_to_string(self) -> &'static str {
111-
match (self.signedness, self.bitness) {
112-
(Signedness::Signed, IntBitness::Xsize) => "isize",
113-
(Signedness::Signed, IntBitness::X8) => "i8",
114-
(Signedness::Signed, IntBitness::X16) => "i16",
115-
(Signedness::Signed, IntBitness::X32) => "i32",
116-
(Signedness::Signed, IntBitness::X64) => "i64",
117-
(Signedness::Signed, IntBitness::X128) => "i128",
118-
(Signedness::Unsigned, IntBitness::Xsize) => "usize",
119-
(Signedness::Unsigned, IntBitness::X8) => "u8",
120-
(Signedness::Unsigned, IntBitness::X16) => "u16",
121-
(Signedness::Unsigned, IntBitness::X32) => "u32",
122-
(Signedness::Unsigned, IntBitness::X64) => "u64",
123-
(Signedness::Unsigned, IntBitness::X128) => "u128",
124-
}
125-
}
126-
}
127-
128-
#[derive(Copy, Clone, PartialEq, Eq, Hash)]
129-
pub struct FloatTy {
130-
pub bitness: FloatBitness,
131-
}
132-
133-
impl fmt::Debug for FloatTy {
134-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
135-
fmt::Display::fmt(self, f)
136-
}
137-
}
138-
139-
impl fmt::Display for FloatTy {
140-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
141-
write!(f, "{}", self.ty_to_string())
142-
}
143-
}
144-
145-
impl FloatTy {
146-
pub fn f32() -> FloatTy {
147-
FloatTy { bitness: FloatBitness::X32 }
148-
}
149-
150-
pub fn f64() -> FloatTy {
151-
FloatTy { bitness: FloatBitness::X64 }
152-
}
153-
154-
pub(crate) fn ty_to_string(self) -> &'static str {
155-
match self.bitness {
156-
FloatBitness::X32 => "f32",
157-
FloatBitness::X64 => "f64",
158-
}
159-
}
160-
}
3+
pub use hir_ty::primitive::{FloatBitness, IntBitness, Signedness, FloatTy, IntTy, Uncertain};

crates/ra_hir_ty/Cargo.toml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
[package]
2+
edition = "2018"
3+
name = "ra_hir_ty"
4+
version = "0.1.0"
5+
authors = ["rust-analyzer developers"]
6+
7+
[lib]
8+
doctest = false
9+
10+
[dependencies]
11+
log = "0.4.5"
12+
rustc-hash = "1.0"
13+
parking_lot = "0.9.0"
14+
ena = "0.13"
15+
16+
ra_syntax = { path = "../ra_syntax" }
17+
ra_arena = { path = "../ra_arena" }
18+
ra_db = { path = "../ra_db" }
19+
hir_expand = { path = "../ra_hir_expand", package = "ra_hir_expand" }
20+
hir_def = { path = "../ra_hir_def", package = "ra_hir_def" }
21+
test_utils = { path = "../test_utils" }
22+
ra_prof = { path = "../ra_prof" }
23+
24+
# https://github.com/rust-lang/chalk/pull/294
25+
chalk-solve = { git = "https://github.com/jackh726/chalk.git", rev = "095cd38a4f16337913bba487f2055b9ca0179f30" }
26+
chalk-rust-ir = { git = "https://github.com/jackh726/chalk.git", rev = "095cd38a4f16337913bba487f2055b9ca0179f30" }
27+
chalk-ir = { git = "https://github.com/jackh726/chalk.git", rev = "095cd38a4f16337913bba487f2055b9ca0179f30" }
28+
29+
lalrpop-intern = "0.15.1"
30+
31+
[dev-dependencies]
32+
insta = "0.12.0"

crates/ra_hir_ty/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
//! FIXME: write short doc here
2+
3+
pub mod primitive;

0 commit comments

Comments
 (0)