Created
October 13, 2016 19:10
-
-
Save anonymous/535de5ebb0984cd2de9df454dd86e5f7 to your computer and use it in GitHub Desktop.
Swift-AST
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Swift-AST | |
Source File: Struct.swift | |
struct Struct { | |
var variable: Int | |
func function() -> Int { | |
return 2 | |
} | |
} | |
func globalFunction(value: Struct) -> Int { | |
return value.variable | |
} | |
AST dump command: | |
swiftc -dump-ast Struct.swift | |
(source_file | |
(struct_decl "Struct" type='Struct.Type' access=internal @_fixed_layout | |
(pattern_binding_decl | |
(pattern_typed type='Int' | |
(pattern_named type='Int' 'variable') | |
(type_ident | |
(component id='Int' bind=Swift.(file).Int)))) | |
(var_decl "variable" type='Int' access=internal storage_kind=stored_with_trivial_accessors | |
(func_decl implicit 'anonname=0x7feeaa0b9730' type='(Struct) -> () -> Int' access=internal getter_for=variable | |
(parameter_list | |
(parameter "self" type='Struct')) | |
(parameter_list) | |
(brace_stmt | |
(return_stmt | |
(member_ref_expr implicit type='Int' decl=Struct.(file).Struct.variable@Struct.swift:10:9 direct_to_storage | |
(declref_expr implicit type='Struct' decl=Struct.(file).Struct.func decl.self@Struct.swift:10:9 specialized=no))))) | |
(func_decl implicit 'anonname=0x7feeaa0b9990' type='(inout Struct) -> (Int) -> ()' access=internal setter_for=variable | |
(parameter_list | |
(parameter "self" type='inout Struct' mutable)) | |
(parameter_list | |
(parameter "value" type='Int')) | |
(brace_stmt | |
(assign_expr | |
(member_ref_expr implicit type='@lvalue Int' accessKind=write decl=Struct.(file).Struct.variable@Struct.swift:10:9 direct_to_storage | |
(declref_expr implicit type='@lvalue Struct' accessKind=readwrite decl=Struct.(file).Struct.func decl.self@Struct.swift:10:9 specialized=no)) | |
(declref_expr implicit type='Int' decl=Struct.(file).Struct.func decl.value@Struct.swift:10:9 specialized=no)))) | |
(func_decl implicit 'anonname=0x7feeaa0babb0' type='(inout Struct) -> (Builtin.RawPointer, inout Builtin.UnsafeValueBuffer) -> (Builtin.RawPointer, (@convention(thin) (Builtin.RawPointer, inout Builtin.UnsafeValueBuffer, inout Struct, @thick Struct.Type) -> ())?)' access=internal materializeForSet_for=variable | |
(parameter_list | |
(parameter "self" type='inout Struct' mutable)) | |
(parameter_list | |
(parameter "buffer" type='Builtin.RawPointer') | |
(parameter "callbackStorage" type='inout Builtin.UnsafeValueBuffer' mutable)))) | |
(func_decl "function()" type='(Struct) -> () -> Int' access=internal | |
(parameter_list | |
(parameter "self" type='Struct')) | |
(parameter_list) | |
(result | |
(type_ident | |
(component id='Int' bind=Swift.(file).Int))) | |
(brace_stmt | |
(return_stmt | |
(call_expr implicit type='Int' location=Struct.swift:13:16 range=[Struct.swift:13:16 - line:13:16] nothrow | |
(constructor_ref_call_expr implicit type='(_builtinIntegerLiteral: Int2048) -> Int' location=Struct.swift:13:16 range=[Struct.swift:13:16 - line:13:16] nothrow | |
(declref_expr implicit type='Int.Type -> (_builtinIntegerLiteral: Int2048) -> Int' location=Struct.swift:13:16 range=[Struct.swift:13:16 - line:13:16] decl=Swift.(file).Int.init(_builtinIntegerLiteral:) specialized=no) | |
(type_expr implicit type='Int.Type' location=Struct.swift:13:16 range=[Struct.swift:13:16 - line:13:16] typerepr='Int')) | |
(tuple_expr implicit type='(_builtinIntegerLiteral: Int2048)' location=Struct.swift:13:16 range=[Struct.swift:13:16 - line:13:16] names=_builtinIntegerLiteral | |
(integer_literal_expr type='Int2048' location=Struct.swift:13:16 range=[Struct.swift:13:16 - line:13:16] value=2)))))) | |
(func_decl implicit 'anonname=0x7feeaa0b9730' type='(Struct) -> () -> Int' access=internal getter_for=variable | |
(parameter_list | |
(parameter "self" type='Struct')) | |
(parameter_list) | |
(brace_stmt | |
(return_stmt | |
(member_ref_expr implicit type='Int' decl=Struct.(file).Struct.variable@Struct.swift:10:9 direct_to_storage | |
(declref_expr implicit type='Struct' decl=Struct.(file).Struct.func decl.self@Struct.swift:10:9 specialized=no))))) | |
(func_decl implicit 'anonname=0x7feeaa0b9990' type='(inout Struct) -> (Int) -> ()' access=internal setter_for=variable | |
(parameter_list | |
(parameter "self" type='inout Struct' mutable)) | |
(parameter_list | |
(parameter "value" type='Int')) | |
(brace_stmt | |
(assign_expr | |
(member_ref_expr implicit type='@lvalue Int' accessKind=write decl=Struct.(file).Struct.variable@Struct.swift:10:9 direct_to_storage | |
(declref_expr implicit type='@lvalue Struct' accessKind=readwrite decl=Struct.(file).Struct.func decl.self@Struct.swift:10:9 specialized=no)) | |
(declref_expr implicit type='Int' decl=Struct.(file).Struct.func decl.value@Struct.swift:10:9 specialized=no)))) | |
(func_decl implicit 'anonname=0x7feeaa0babb0' type='(inout Struct) -> (Builtin.RawPointer, inout Builtin.UnsafeValueBuffer) -> (Builtin.RawPointer, (@convention(thin) (Builtin.RawPointer, inout Builtin.UnsafeValueBuffer, inout Struct, @thick Struct.Type) -> ())?)' access=internal materializeForSet_for=variable | |
(parameter_list | |
(parameter "self" type='inout Struct' mutable)) | |
(parameter_list | |
(parameter "buffer" type='Builtin.RawPointer') | |
(parameter "callbackStorage" type='inout Builtin.UnsafeValueBuffer' mutable))) | |
(constructor_decl implicit "init(variable:)" type='Struct.Type -> (variable: Int) -> Struct' access=internal designated | |
(parameter_list | |
(parameter "self" type='inout Struct' mutable)) | |
(parameter_list | |
(parameter "variable" apiName=variable type='Int')))) | |
(func_decl "globalFunction(_:)" type='(Struct) -> Int' access=internal | |
(parameter_list | |
(parameter "value" type='Struct')) | |
(result | |
(type_ident | |
(component id='Int' bind=Swift.(file).Int))) | |
(brace_stmt | |
(return_stmt | |
(call_expr type='Int' location=Struct.swift:18:18 range=[Struct.swift:18:12 - line:18:27] nothrow | |
(dot_syntax_call_expr type='() -> Int' location=Struct.swift:18:18 range=[Struct.swift:18:12 - line:18:18] nothrow | |
(declref_expr type='(Struct) -> () -> Int' location=Struct.swift:18:18 range=[Struct.swift:18:18 - line:18:18] decl=Struct.(file).Struct.function()@Struct.swift:12:10 specialized=no) | |
(declref_expr type='Struct' location=Struct.swift:18:12 range=[Struct.swift:18:12 - line:18:12] decl=Struct.(file).func decl.value@Struct.swift:17:21 specialized=no)) | |
(tuple_expr type='()' location=Struct.swift:18:26 range=[Struct.swift:18:26 - line:18:27])))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment