aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--interpreter.py9
-rw-r--r--test cases/common/42 string formatting/meson.build20
2 files changed, 28 insertions, 1 deletions
diff --git a/interpreter.py b/interpreter.py
index 82fdb74..b9f91c4 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -1832,12 +1832,12 @@ class Interpreter():
def string_method_call(self, obj, method_name, args):
obj = self.to_native(obj)
+ (posargs, _) = self.reduce_arguments(args)
if method_name == 'strip':
return obj.strip()
elif method_name == 'format':
return self.format_string(obj, args)
elif method_name == 'split':
- (posargs, _) = self.reduce_arguments(args)
if len(posargs) > 1:
raise InterpreterException('Split() must have at most one argument.')
elif len(posargs) == 1:
@@ -1847,6 +1847,13 @@ class Interpreter():
return obj.split(s)
else:
return obj.split()
+ elif method_name == 'startswith' or method_name == 'endswith':
+ s = posargs[0]
+ if not isinstance(s, str):
+ raise InterpreterException('Argument must be a string.')
+ if method_name == 'startswith':
+ return obj.startswith(s)
+ return obj.endswith(s)
raise InterpreterException('Unknown method "%s" for a string.' % method_name)
def to_native(self, arg):
diff --git a/test cases/common/42 string formatting/meson.build b/test cases/common/42 string formatting/meson.build
index 4e7cc1a..81f5268 100644
--- a/test cases/common/42 string formatting/meson.build
+++ b/test cases/common/42 string formatting/meson.build
@@ -20,3 +20,23 @@ subs2 = '42'
if templ2.format(subs2) != '42'
error('String formatting with variables is broken.')
endif
+
+long = 'abcde'
+prefix = 'abc'
+suffix = 'cde'
+
+if not long.startswith(prefix)
+ error('Prefix.')
+endif
+
+if long.startswith(suffix)
+ error('Not prefix.')
+endif
+
+if not long.endswith(suffix)
+ error('Suffix.')
+endif
+
+if long.endswith(prefix)
+ error('Not suffix.')
+endif