about summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorEric Holk <eric.holk@gmail.com>2012-05-24 10:23:46 -0700
committerEric Holk <eric.holk@gmail.com>2012-05-24 15:06:56 -0700
commitd993df74c39d7c0938194485d7c41ba94ed419ec (patch)
treeeb87842e74ba8db2a456c5d3a2fd7767c3559567 /src/rustc
parent30f8555544481e998f52d196c5a0f4d04cbcf334 (diff)
downloadrust-d993df74c39d7c0938194485d7c41ba94ed419ec.tar.gz
rust-d993df74c39d7c0938194485d7c41ba94ed419ec.zip
Teach parser and related things to understand const kind bounds.
Diffstat (limited to 'src/rustc')
-rw-r--r--src/rustc/metadata/tydecode.rs1
-rw-r--r--src/rustc/metadata/tyencode.rs1
-rw-r--r--src/rustc/middle/ty.rs1
-rw-r--r--src/rustc/middle/typeck/check/method.rs4
-rw-r--r--src/rustc/middle/typeck/check/vtable.rs4
-rw-r--r--src/rustc/middle/typeck/collect.rs1
6 files changed, 10 insertions, 2 deletions
diff --git a/src/rustc/metadata/tydecode.rs b/src/rustc/metadata/tydecode.rs
index d5b149d4e36..7d242a7e9e0 100644
--- a/src/rustc/metadata/tydecode.rs
+++ b/src/rustc/metadata/tydecode.rs
@@ -501,6 +501,7 @@ fn parse_bounds(st: @pstate, conv: conv_did) -> @[ty::param_bound] {
         bounds += [alt check next(st) {
           'S' { ty::bound_send }
           'C' { ty::bound_copy }
+          'K' { ty::bound_const }
           'I' { ty::bound_iface(parse_ty(st, conv)) }
           '.' { break; }
         }];
diff --git a/src/rustc/metadata/tyencode.rs b/src/rustc/metadata/tyencode.rs
index 67f9e5bc0af..cd2f86715e0 100644
--- a/src/rustc/metadata/tyencode.rs
+++ b/src/rustc/metadata/tyencode.rs
@@ -392,6 +392,7 @@ fn enc_bounds(w: io::writer, cx: @ctxt, bs: @[ty::param_bound]) {
         alt bound {
           ty::bound_send { w.write_char('S'); }
           ty::bound_copy { w.write_char('C'); }
+          ty::bound_const { w.write_char('K'); }
           ty::bound_iface(tp) {
             w.write_char('I');
             enc_ty(w, cx, tp);
diff --git a/src/rustc/middle/ty.rs b/src/rustc/middle/ty.rs
index b3701bd74f4..f1371b42598 100644
--- a/src/rustc/middle/ty.rs
+++ b/src/rustc/middle/ty.rs
@@ -401,6 +401,7 @@ enum type_err {
 enum param_bound {
     bound_copy,
     bound_send,
+    bound_const,
     bound_iface(t),
 }
 
diff --git a/src/rustc/middle/typeck/check/method.rs b/src/rustc/middle/typeck/check/method.rs
index 0aa8b741d12..0d89e246e91 100644
--- a/src/rustc/middle/typeck/check/method.rs
+++ b/src/rustc/middle/typeck/check/method.rs
@@ -47,7 +47,9 @@ impl methods for lookup {
         let bounds = tcx.ty_param_bounds.get(did.node);
         for vec::each(*bounds) {|bound|
             let (iid, bound_substs) = alt bound {
-              ty::bound_copy | ty::bound_send { cont; /* ok */ }
+              ty::bound_copy | ty::bound_send | ty::bound_const {
+                cont; /* ok */
+              }
               ty::bound_iface(bound_t) {
                 alt check ty::get(bound_t).struct {
                   ty::ty_iface(i, substs) { (i, substs) }
diff --git a/src/rustc/middle/typeck/check/vtable.rs b/src/rustc/middle/typeck/check/vtable.rs
index 5201ce1b558..f279cab012f 100644
--- a/src/rustc/middle/typeck/check/vtable.rs
+++ b/src/rustc/middle/typeck/check/vtable.rs
@@ -67,7 +67,9 @@ fn lookup_vtable(fcx: @fn_ctxt, isc: resolve::iscopes, sp: span,
         let mut n_bound = 0u;
         for vec::each(*tcx.ty_param_bounds.get(did.node)) { |bound|
             alt bound {
-              ty::bound_send | ty::bound_copy { /* ignore */ }
+              ty::bound_send | ty::bound_copy | ty::bound_const {
+                /* ignore */
+              }
               ty::bound_iface(ity) {
                 alt check ty::get(ity).struct {
                   ty::ty_iface(idid, substs) {
diff --git a/src/rustc/middle/typeck/collect.rs b/src/rustc/middle/typeck/collect.rs
index 0674a5e79df..edaa25396a8 100644
--- a/src/rustc/middle/typeck/collect.rs
+++ b/src/rustc/middle/typeck/collect.rs
@@ -657,6 +657,7 @@ fn ty_param_bounds(ccx: @crate_ctxt,
             alt b {
               ast::bound_send { [ty::bound_send] }
               ast::bound_copy { [ty::bound_copy] }
+              ast::bound_const { [ty::bound_const] }
               ast::bound_iface(t) {
                 let ity = ast_ty_to_ty(ccx, empty_rscope, t);
                 alt ty::get(ity).struct {