if can_inline then
v.adds
- if not n_superclasses.is_empty then
- for n_superclass in n_superclasses do
+ if not n_propdefs.is_empty then
+ for n_superclass in n_propdefs do
v.visit n_superclass
v.adds
end
if v.skip_empty then v.addn
v.indent += 1
- for n_superclass in n_superclasses do
- v.catch_up n_superclass
- v.addt
- v.visit n_superclass
- v.finish_line
- v.addn
- end
-
- if not n_superclasses.is_empty and not n_propdefs.is_empty then
- if v.skip_empty then v.addn
- end
-
super
v.catch_up n_kwend
v.indent -= 1
redef fun is_inlinable do
if not super then return false
- if not n_propdefs.is_empty then return false
- if n_superclasses.length > 1 then return false
+ # FIXME: repair pretty-printing one-liner classes
+ if n_propdefs.length > 0 then return false
+ #if n_propdefs.length == 1 and not n_propdefs.first isa ASuperPropdef then return false
if not collect_comments.is_empty then return false
return true
end
end
end
-redef class ASuperclass
- redef fun accept_pretty_printer(v) do
- v.visit n_kwsuper
- v.adds
- v.visit n_type
- end
-end
-
# Properties
redef class APropdef
v.visit n_doc
v.addt
- if not n_visibility isa APublicVisibility then
+ if not n_visibility isa nullable APublicVisibility then
v.visit n_visibility
v.adds
end
end
end
+redef class ASuperPropdef
+ redef fun accept_pretty_printer(v) do
+ super
+ v.visit n_kwsuper
+ v.adds
+ v.visit n_type
+ visit_annotations(v, n_annotations)
+ v.finish_line
+ v.addn
+ end
+
+ redef fun is_inlinable do return true
+end
+
redef class ASignature
redef fun accept_pretty_printer(v) do
if not n_params.is_empty then
redef fun bin_expr1 do return n_expr
redef fun bin_expr2 do return n_expr2
-end
-
-redef class AEqExpr
- redef fun bin_op do return "=="
-end
-
-redef class AGeExpr
- redef fun bin_op do return ">="
-end
-
-redef class AGgExpr
- redef fun bin_op do return ">>"
-end
-
-redef class AGtExpr
- redef fun bin_op do return ">"
-end
-
-redef class ALeExpr
- redef fun bin_op do return "<="
-end
-
-redef class ALlExpr
- redef fun bin_op do return "<<"
-end
-
-redef class ALtExpr
- redef fun bin_op do return "<"
-end
-
-redef class AMinusExpr
- redef fun bin_op do return "-"
-end
-
-redef class ANeExpr
- redef fun bin_op do return "!="
-end
-
-redef class APercentExpr
- redef fun bin_op do return "%"
-end
-
-redef class APlusExpr
- redef fun bin_op do return "+"
-end
-
-redef class ASlashExpr
- redef fun bin_op do return "/"
-end
-
-redef class AStarExpr
- redef fun bin_op do return "*"
-end
-
-redef class AStarstarExpr
- redef fun bin_op do return "**"
-end
-
-redef class AStarshipExpr
- redef fun bin_op do return "<=>"
+ redef fun bin_op do return operator
end
redef class AIsaExpr
# Syntax
+redef class AUplusExpr
+ redef fun accept_pretty_printer(v) do
+ v.consume "+"
+ v.visit n_expr
+ end
+end
+
redef class AUminusExpr
redef fun accept_pretty_printer(v) do
v.consume "-"