Commit f8513b3b authored by Stefan Behnel's avatar Stefan Behnel

parse C++ namespace name as unicode string

parent 59ec7599
...@@ -632,7 +632,7 @@ def p_opt_string_literal(s): ...@@ -632,7 +632,7 @@ def p_opt_string_literal(s):
else: else:
return None return None
def p_string_literal(s): def p_string_literal(s, kind_override=None):
# A single string or char literal. # A single string or char literal.
# Returns (kind, value) where kind in ('b', 'c', 'u') # Returns (kind, value) where kind in ('b', 'c', 'u')
# s.sy == 'BEGIN_STRING' # s.sy == 'BEGIN_STRING'
...@@ -649,6 +649,8 @@ def p_string_literal(s): ...@@ -649,6 +649,8 @@ def p_string_literal(s):
if Future.unicode_literals in s.context.future_directives: if Future.unicode_literals in s.context.future_directives:
if kind == '': if kind == '':
kind = 'u' kind = 'u'
if kind_override is not None and kind_override in 'ub':
kind = kind_override
if kind == 'u': if kind == 'u':
chars = StringEncoding.UnicodeLiteralBuilder() chars = StringEncoding.UnicodeLiteralBuilder()
else: else:
...@@ -2189,7 +2191,7 @@ def p_cdef_extern_block(s, pos, ctx): ...@@ -2189,7 +2191,7 @@ def p_cdef_extern_block(s, pos, ctx):
ctx = ctx(cdef_flag = 1, visibility = 'extern') ctx = ctx(cdef_flag = 1, visibility = 'extern')
if s.systring == "namespace": if s.systring == "namespace":
s.next() s.next()
ctx.namespace = p_string_literal(s)[1] ctx.namespace = p_string_literal(s, kind_override='u')[1]
if p_nogil(s): if p_nogil(s):
ctx.nogil = 1 ctx.nogil = 1
body = p_suite(s, ctx) body = p_suite(s, ctx)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment