]> Repositorios git - scryer-prolog.git/commitdiff
the indexer now categorizes partial strings only as lists (#623, #642)
authorMark Thom <[email protected]>
Mon, 27 Jul 2020 22:43:43 +0000 (16:43 -0600)
committerMark Thom <[email protected]>
Mon, 27 Jul 2020 22:43:43 +0000 (16:43 -0600)
Cargo.lock
src/indexing.rs
src/machine/machine_indices.rs

index 41c90cbd81ad9735532ae8ca9c76a601a97084f8..041ddfa9eb975fd8d23a3de46c5d7b2efc6e3a66 100644 (file)
@@ -51,6 +51,12 @@ version = "0.11.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7"
 
+[[package]]
+name = "base64"
+version = "0.12.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff"
+
 [[package]]
 name = "bit-set"
 version = "0.5.2"
@@ -1157,7 +1163,7 @@ version = "0.7.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "2bc8af4bda8e1ff4932523b94d3dd20ee30a87232323eda55903ffd71d2fb017"
 dependencies = [
- "base64",
+ "base64 0.11.0",
  "blake2b_simd",
  "constant_time_eq",
  "crossbeam-utils",
@@ -1217,6 +1223,7 @@ checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
 name = "scryer-prolog"
 version = "0.8.126"
 dependencies = [
+ "base64 0.12.3",
  "blake2",
  "chrono",
  "cpu-time",
index add67bc502724f78338b91a5c305ca8b77f0a821..b93b3c9315f773453727f764fcfe4841f9aa386b 100644 (file)
@@ -123,10 +123,6 @@ impl CodeOffsets {
                     code.push(Self::add_index(code.is_empty(), index));
                 }
             }
-            &Constant::String(_) => {
-                let is_initial_index = self.lists.is_empty();
-                self.lists.push(Self::add_index(is_initial_index, index));
-            }
             &Constant::Usize(n) => {
                 let code = self.constants
                     .entry(Constant::Integer(Rc::new(Integer::from(n))))
@@ -158,7 +154,7 @@ impl CodeOffsets {
                 let is_initial_index = code.is_empty();
                 code.push(Self::add_index(is_initial_index, index));
             }
-            &Term::Cons(..) => {
+            &Term::Cons(..) | &Term::Constant(_, Constant::String(_)) => {
                 let is_initial_index = self.lists.is_empty();
                 self.lists.push(Self::add_index(is_initial_index, index));
             }
@@ -172,7 +168,8 @@ impl CodeOffsets {
                 let is_initial_index = code.is_empty();
                 code.push(Self::add_index(is_initial_index, index));
             }
-            _ => {}
+            _ => {
+            }
         };
     }
 
index 735009f8a2cd3dd462f53e6649bb5078e10516d9..13fb6ae7c330e3e3c309798857596bf9a87168a4 100644 (file)
@@ -272,19 +272,6 @@ impl Addr {
             &Addr::Float(f) => {
                 Some(Constant::Float(f))
             }
-            &Addr::PStrLocation(h, n) => {
-                let mut heap_pstr_iter =
-                    machine_st.heap_pstr_iter(Addr::PStrLocation(h, n));
-
-                let buf = heap_pstr_iter.to_string();
-                let end_addr = heap_pstr_iter.focus();
-
-                if end_addr == Addr::EmptyList {
-                    Some(Constant::String(Rc::new(buf)))
-                } else {
-                    None
-                }
-            }
             &Addr::Usize(n) => {
                 Some(Constant::Usize(n))
             }