]> Repositorios git - scryer-prolog.git/commitdiff
make partial strings accept characters (#268)
authorMark Thom <[email protected]>
Fri, 21 Feb 2020 20:08:03 +0000 (13:08 -0700)
committerMark Thom <[email protected]>
Fri, 21 Feb 2020 20:08:03 +0000 (13:08 -0700)
src/prolog/machine/machine_state.rs

index 4c626b0d22b8ec917aa1814644bc06fb42abfaac..3a994e9e3e2a04ddbff046840837847eb384737a 100644 (file)
@@ -274,10 +274,12 @@ impl MachineState {
     fn try_char_list(&self, addrs: Vec<Addr>) -> Result<String, MachineError> {
         let mut chars = String::new();
         let mut iter = addrs.iter();
-
+        
         while let Some(addr) = iter.next() {
+            let addr = self.store(self.deref(addr.clone()));
+            
             match addr {
-                &Addr::Con(Constant::String(n, ref s))
+                Addr::Con(Constant::String(n, ref s))
                     if self.flags.double_quotes.is_chars() => {
                         if s.len() < n {
                             chars += &s[n ..];
@@ -287,10 +289,10 @@ impl MachineState {
                             return Err(MachineError::type_error(ValidType::Character, addr.clone()));
                         }
                     }
-                &Addr::Con(Constant::Char(c)) => {
+                Addr::Con(Constant::Char(c)) => {
                     chars.push(c);
                 }
-                &Addr::Con(Constant::Atom(ref name, _))
+                Addr::Con(Constant::Atom(ref name, _))
                     if name.as_str().len() == 1 => {
                         chars += name.as_str();
                     }