Fix missing docstrings from defclass issue #248
Added ability to parse doc strings set in defclass declarations, likei: (defclass Foo [object] "this is the doc string" [[x 1]])
This commit is contained in:
parent
df7bb1d29a
commit
c42492ad84
@ -1646,6 +1646,17 @@ class HyASTCompiler(object):
|
|||||||
|
|
||||||
body = Result()
|
body = Result()
|
||||||
|
|
||||||
|
# grab the doc string, if there is one
|
||||||
|
if expression and isinstance(expression[0], HyString):
|
||||||
|
docstring = expression.pop(0)
|
||||||
|
symb = HySymbol("__doc__")
|
||||||
|
symb.start_line = docstring.start_line
|
||||||
|
symb.start_column = docstring.start_column
|
||||||
|
body += self._compile_assign(symb, docstring,
|
||||||
|
docstring.start_line,
|
||||||
|
docstring.start_column)
|
||||||
|
body += body.expr_as_stmt()
|
||||||
|
|
||||||
if expression:
|
if expression:
|
||||||
try:
|
try:
|
||||||
body_expression = iter(expression.pop(0))
|
body_expression = iter(expression.pop(0))
|
||||||
|
@ -60,3 +60,26 @@
|
|||||||
(x)
|
(x)
|
||||||
(assert false))
|
(assert false))
|
||||||
(except [NameError])))
|
(except [NameError])))
|
||||||
|
|
||||||
|
(defn test-defclass-docstring []
|
||||||
|
"NATIVE: test defclass docstring"
|
||||||
|
(defclass A []
|
||||||
|
[[--doc-- "doc string"]
|
||||||
|
[x 1]])
|
||||||
|
(setv a (A))
|
||||||
|
(assert (= a.__doc__ "doc string"))
|
||||||
|
(defclass B []
|
||||||
|
"doc string"
|
||||||
|
[[x 1]])
|
||||||
|
(setv b (B))
|
||||||
|
(assert (= b.x 1))
|
||||||
|
(assert (= b.__doc__ "doc string"))
|
||||||
|
(defclass MultiLine []
|
||||||
|
"begin a very long multi-line string to make
|
||||||
|
sure that it comes out the way we hope
|
||||||
|
and can span 3 lines end."
|
||||||
|
[[x 1]])
|
||||||
|
(setv mL (MultiLine))
|
||||||
|
(assert (= mL.x 1))
|
||||||
|
(assert (in "begin" mL.__doc__))
|
||||||
|
(assert (in "end" mL.__doc__)))
|
||||||
|
Loading…
Reference in New Issue
Block a user