From: Jean Privat Date: Thu, 18 Dec 2014 20:00:23 +0000 (-0500) Subject: literal: promote `as_X` from annotation X-Git-Tag: v0.7~13^2~5 X-Git-Url: http://nitlanguage.org literal: promote `as_X` from annotation Signed-off-by: Jean Privat --- diff --git a/src/annotation.nit b/src/annotation.nit index af63ad3..f5d2447 100644 --- a/src/annotation.nit +++ b/src/annotation.nit @@ -16,7 +16,7 @@ module annotation import modelbuilder -private import literal +import literal import model::mmodule_data redef class Prod @@ -100,37 +100,6 @@ redef class AAnnotation end end -redef class AExpr - # Get `self` as a `String`. - # Return null if not a string. - fun as_string: nullable String - do - if not self isa AStringFormExpr then return null - return self.value.as(not null) - end - - # Get `self` as an `Int`. - # Return null if not an integer. - fun as_int: nullable Int - do - if not self isa AIntExpr then return null - return self.value.as(not null) - end - - # Get `self` as a single identifier. - # Return null if not a single identifier. - fun as_id: nullable String - do - if self isa AMethidExpr then - return self.collect_text - end - if not self isa ACallExpr then return null - if not self.n_expr isa AImplicitSelfExpr then return null - if not self.n_args.n_exprs.is_empty then return null - return self.n_id.text - end -end - redef class ModelBuilder # Collect all annotations by `name` assocated to `mmodule` and its imported modules. # Note that visibility is not considered. diff --git a/src/literal.nit b/src/literal.nit index e39409f..5af1808 100644 --- a/src/literal.nit +++ b/src/literal.nit @@ -55,6 +55,38 @@ redef class ANode private fun accept_literal(v: LiteralVisitor) do end end +redef class AExpr + # Get `self` as a `String`. + # Return null if not a string. + fun as_string: nullable String + do + if not self isa AStringFormExpr then return null + return self.value.as(not null) + end + + # Get `self` as an `Int`. + # Return null if not an integer. + fun as_int: nullable Int + do + if not self isa AIntExpr then return null + return self.value.as(not null) + end + + # Get `self` as a single identifier. + # Return null if not a single identifier. + fun as_id: nullable String + do + if self isa AMethidExpr then + return self.collect_text + end + if not self isa ACallExpr then return null + if not self.n_expr isa AImplicitSelfExpr then return null + if not self.n_args.n_exprs.is_empty then return null + return self.n_id.text + end +end + + redef class AIntExpr # The value of the literal int once computed. var value: nullable Int