branch: externals/matlab-mode
commit 30ad5bff13f6b74a58f96edf9875705d22a0f0a5
Author: John Ciolfi <[email protected]>
Commit: John Ciolfi <[email protected]>

    matlab-ts-mode--ei: handle arguments keyword fcn
---
 matlab-ts-mode--ei.el                              |   2 +-
 .../electric_indent_keyword_fcns.m                 |  80 ++++++++++
 .../electric_indent_keyword_fcns_expected.m        |  80 ++++++++++
 .../electric_indent_keyword_fcns_expected_msgs.m   |  80 ++++++++++
 .../electric_indent_keyword_fcns.m                 |  80 ++++++++++
 .../electric_indent_keyword_fcns_expected.txt      | 172 +++++++++++++++++++++
 6 files changed, 493 insertions(+), 1 deletion(-)

diff --git a/matlab-ts-mode--ei.el b/matlab-ts-mode--ei.el
index f27566f512..efab3cfa0a 100644
--- a/matlab-ts-mode--ei.el
+++ b/matlab-ts-mode--ei.el
@@ -286,7 +286,7 @@ be unary-op even though the node type is \"+\"."
       (setq node-type "prop-dim"))
 
      ;; Case: events, enumeration, methods
-     ((and (string-match-p (rx bos (or "events" "enumeration" "methods") eos) 
node-type)
+     ((and (string-match-p (rx bos (or "events" "enumeration" "methods" 
"arguments") eos) node-type)
            (string= parent-type "identifier"))
       ;; TopTester: electric_indent_inspect_keyword_commands.m
       ;; TopTester: electric_indent_inspect_keyword_commands2.m
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns.m
new file mode 100644
index 0000000000..1cb4216f51
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns.m
@@ -0,0 +1,80 @@
+% -*- matlab-ts -*-
+
+% t-utils-test-indent: no-line-by-line-indent - line-by-line typing results in 
error nodes
+
+classdef electric_indent_keyword_fcns < handle
+
+    properties
+        normalprop = 1;
+    end
+
+    properties (Access= 'public')
+        % See if we can create properties using keywords
+        %properties = 1;
+        %methods = 1;
+        %events = 1;
+        arguments
+        prop = 1;
+    end
+
+    events (Access= 'private')
+        %properties
+        %events
+        %methods
+        arguments
+    end
+
+    methods
+
+        function simple_method(obj)
+            arguments
+                obj
+            end
+
+            disp(obj.normalprop);
+        end
+
+        function obj = blocks(arguments, events, properties, methods, 
enumeration)
+
+            arguments
+                arguments
+                events
+                properties
+                methods
+                enumeration
+            end
+
+            obj.prop = arguments;
+            obj.prop = events;
+            obj.prop = properties;
+            obj.prop = methods;
+            obj.prop = enumeration;
+        end
+
+        function properties(~)
+        end
+
+        function methods(~)
+        end
+
+        function events(~)
+        end
+
+        function arguments (~)
+        end
+
+        function enumeration(~)
+        end
+
+        function usestuff(obj)
+        % Try using the methods of this object
+            obj.properties();
+            obj.methods();
+            obj.events();
+            obj.arguments ();
+            obj.enumeration();
+        end
+
+    end
+
+end
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected.m
new file mode 100644
index 0000000000..cc5fa242af
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected.m
@@ -0,0 +1,80 @@
+% -*- matlab-ts -*-
+
+% t-utils-test-indent: no-line-by-line-indent - line-by-line typing results in 
error nodes
+
+classdef electric_indent_keyword_fcns < handle
+
+    properties
+        normalprop = 1;
+    end
+
+    properties (Access= 'public')
+        % See if we can create properties using keywords
+        %properties = 1;
+        %methods = 1;
+        %events = 1;
+        arguments
+        prop = 1;
+    end
+
+    events (Access= 'private')
+        %properties
+        %events
+        %methods
+        arguments
+    end
+
+    methods
+
+        function simple_method(obj)
+            arguments
+                obj
+            end
+
+            disp(obj.normalprop);
+        end
+
+        function obj = blocks(arguments, events, properties, methods, 
enumeration)
+
+            arguments
+                arguments
+                events
+                properties
+                methods
+                enumeration
+            end
+
+            obj.prop = arguments;
+            obj.prop = events;
+            obj.prop = properties;
+            obj.prop = methods;
+            obj.prop = enumeration;
+        end
+
+        function properties(~)
+        end
+
+        function methods(~)
+        end
+
+        function events(~)
+        end
+
+        function arguments(~)
+        end
+
+        function enumeration(~)
+        end
+
+        function usestuff(obj)
+        % Try using the methods of this object
+            obj.properties();
+            obj.methods();
+            obj.events();
+            obj.arguments();
+            obj.enumeration();
+        end
+
+    end
+
+end
diff --git 
a/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected_msgs.m
 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected_msgs.m
new file mode 100644
index 0000000000..bbcc937a44
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected_msgs.m
@@ -0,0 +1,80 @@
+% -*- matlab-ts -*- %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
+
+% t-utils-test-indent: no-line-by-line-indent - line-by-line typing results in 
error nodes %  <{Matched rule: (matlab-ts-mode--i-top-level 
matlab-ts-mode--column-0 0)}>
+
+classdef electric_indent_keyword_fcns < handle %  <{Matched rule: 
(matlab-ts-mode--i-top-level matlab-ts-mode--column-0 0)}>
+
+    properties %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+        normalprop = 1; %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+    end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+    properties (Access= 'public') %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+        % See if we can create properties using keywords %  <{Matched rule: 
((parent-is 
"\\`\\(?:arguments_statement\\|e\\(?:numeration\\|vents\\)\\|f\\(?:or_statement\\|unction_definition\\)\\|if_statement\\|methods\\|properties\\|while_statement\\)\\'")
 parent 4)}>
+        %properties = 1; %  <{Matched rule: 
(matlab-ts-mode--i-block-comment-end-matcher 
matlab-ts-mode--i-block-comment-end-anchor 0)}>
+        %methods = 1; %  <{Matched rule: 
(matlab-ts-mode--i-block-comment-end-matcher 
matlab-ts-mode--i-block-comment-end-anchor 0)}>
+        %events = 1; %  <{Matched rule: 
(matlab-ts-mode--i-block-comment-end-matcher 
matlab-ts-mode--i-block-comment-end-anchor 0)}>
+        arguments %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+        prop = 1; %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+    end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+    events (Access= 'private') %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+        %properties %  <{Matched rule: ((parent-is 
"\\`\\(?:arguments_statement\\|e\\(?:numeration\\|vents\\)\\|f\\(?:or_statement\\|unction_definition\\)\\|if_statement\\|methods\\|properties\\|while_statement\\)\\'")
 parent 4)}>
+        %events %  <{Matched rule: 
(matlab-ts-mode--i-block-comment-end-matcher 
matlab-ts-mode--i-block-comment-end-anchor 0)}>
+        %methods %  <{Matched rule: 
(matlab-ts-mode--i-block-comment-end-matcher 
matlab-ts-mode--i-block-comment-end-anchor 0)}>
+        arguments %  <{Matched rule: ((parent-is 
"\\`\\(?:arguments_statement\\|e\\(?:numeration\\|vents\\)\\|f\\(?:or_statement\\|unction_definition\\)\\|if_statement\\|methods\\|properties\\|while_statement\\)\\'")
 parent 4)}>
+    end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+    methods %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+
+        function simple_method(obj) %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+            arguments %  <{Matched rule: ((parent-is 
"\\`function_definition\\'") parent 
matlab-ts-mode--set-function-indent-level-for-gp)}>
+                obj %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+            end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+            disp(obj.normalprop); %  <{Matched rule: ((parent-is 
"\\`function_definition\\'") parent 
matlab-ts-mode--set-function-indent-level-for-gp)}>
+        end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+        function obj = blocks(arguments, events, properties, methods, 
enumeration) %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+
+            arguments %  <{Matched rule: ((parent-is 
"\\`function_definition\\'") parent 
matlab-ts-mode--set-function-indent-level-for-gp)}>
+                arguments %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+                events %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+                properties %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+                methods %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+                enumeration %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+            end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+            obj.prop = arguments; %  <{Matched rule: ((parent-is 
"\\`function_definition\\'") parent 
matlab-ts-mode--set-function-indent-level-for-gp)}>
+            obj.prop = events; %  <{Matched rule: ((parent-is "\\`block\\'") 
parent 0)}>
+            obj.prop = properties; %  <{Matched rule: ((parent-is 
"\\`block\\'") parent 0)}>
+            obj.prop = methods; %  <{Matched rule: ((parent-is "\\`block\\'") 
parent 0)}>
+            obj.prop = enumeration; %  <{Matched rule: ((parent-is 
"\\`block\\'") parent 0)}>
+        end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+        function properties(~) %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+        end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+        function methods(~) %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+        end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+        function events(~) %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+        end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+        function arguments(~) %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+        end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+        function enumeration(~) %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+        end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+        function usestuff(obj) %  <{Matched rule: ((node-is 
"\\`\\(?:arguments_statement\\|block\\|e\\(?:num\\(?:eration\\)?\\|vents\\)\\|function_definition\\|methods\\|propert\\(?:ies\\|y\\)\\)\\'")
 parent 4)}>
+        % Try using the methods of this object %  <{Matched rule: 
(matlab-ts-mode--i-doc-comment-matcher matlab-ts-mode--i-doc-comment-anchor 
matlab-ts-mode--i-doc-comment-offset)}>
+            obj.properties(); %  <{Matched rule: ((parent-is 
"\\`function_definition\\'") parent 
matlab-ts-mode--set-function-indent-level-for-gp)}>
+            obj.methods(); %  <{Matched rule: ((parent-is "\\`block\\'") 
parent 0)}>
+            obj.events(); %  <{Matched rule: ((parent-is "\\`block\\'") parent 
0)}>
+            obj.arguments(); %  <{Matched rule: ((parent-is "\\`block\\'") 
parent 0)}>
+            obj.enumeration(); %  <{Matched rule: ((parent-is "\\`block\\'") 
parent 0)}>
+        end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+    end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
+
+end %  <{Matched rule: ((node-is 
"\\`\\(?:catch_clause\\|e\\(?:lse\\(?:\\(?:if\\)?_clause\\)\\|nd\\)\\)\\'") 
parent 0)}>
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns.m
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns.m
new file mode 100644
index 0000000000..1cb4216f51
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns.m
@@ -0,0 +1,80 @@
+% -*- matlab-ts -*-
+
+% t-utils-test-indent: no-line-by-line-indent - line-by-line typing results in 
error nodes
+
+classdef electric_indent_keyword_fcns < handle
+
+    properties
+        normalprop = 1;
+    end
+
+    properties (Access= 'public')
+        % See if we can create properties using keywords
+        %properties = 1;
+        %methods = 1;
+        %events = 1;
+        arguments
+        prop = 1;
+    end
+
+    events (Access= 'private')
+        %properties
+        %events
+        %methods
+        arguments
+    end
+
+    methods
+
+        function simple_method(obj)
+            arguments
+                obj
+            end
+
+            disp(obj.normalprop);
+        end
+
+        function obj = blocks(arguments, events, properties, methods, 
enumeration)
+
+            arguments
+                arguments
+                events
+                properties
+                methods
+                enumeration
+            end
+
+            obj.prop = arguments;
+            obj.prop = events;
+            obj.prop = properties;
+            obj.prop = methods;
+            obj.prop = enumeration;
+        end
+
+        function properties(~)
+        end
+
+        function methods(~)
+        end
+
+        function events(~)
+        end
+
+        function arguments (~)
+        end
+
+        function enumeration(~)
+        end
+
+        function usestuff(obj)
+        % Try using the methods of this object
+            obj.properties();
+            obj.methods();
+            obj.events();
+            obj.arguments ();
+            obj.enumeration();
+        end
+
+    end
+
+end
diff --git 
a/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected.txt
 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected.txt
new file mode 100644
index 0000000000..63fc06f23f
--- /dev/null
+++ 
b/tests/test-matlab-ts-mode-parser-files/copy-of-test-matlab-ts-mode-electric-indent-files/electric_indent_keyword_fcns_expected.txt
@@ -0,0 +1,172 @@
+# -*- t-utils-ts-parse-tree -*-
+(source_file<1,1574> (comment[1,20]@{% -*- matlab-ts -*-}@) 
(comment[22,112]@{% t-utils-test-indent: no-line-by-line-indent - li...}@) 
\n[112,114]
+ (class_definition<114,1573> classdef[114,122] name: 
(identifier[123,151]@{electric_indent_keyword_fcns}@)
+  (superclasses<152,160> <[152,153]
+   (property_name<154,160> (identifier[154,160]@{handle}@)))
+  \n[160,162]
+  (properties<166,208> properties[166,176] \n[176,177]
+   (property<185,199> name: (identifier[185,195]@{normalprop}@)
+    (default_value<196,199> =[196,197] (number[198,199]@{1}@)))
+   ;[199,200] \n[200,201] end[205,208])
+  \n[208,210]
+  (properties<214,412> properties[214,224]
+   (attributes<225,243> ([225,226]
+    (attribute<226,242> (identifier[226,232]@{Access}@) =[232,233]
+     (string<234,242> '[234,235] (string_content[235,241]@{public}@) 
'[241,242]))
+    )[242,243])
+   (comment[252,368]@{% See if we can create properties using keywords\n...}@) 
\n[368,369]
+   (property<377,386>
+    name: (identifier<377,386> arguments[377,386]))
+   \n[386,387]
+   (property<395,403> name: (identifier[395,399]@{prop}@)
+    (default_value<400,403> =[400,401] (number[402,403]@{1}@)))
+   ;[403,404] \n[404,405] end[409,412])
+  \n[412,414]
+  (events<418,523> events[418,424]
+   (attributes<425,444> ([425,426]
+    (attribute<426,443> (identifier[426,432]@{Access}@) =[432,433]
+     (string<434,443> '[434,435] (string_content[435,442]@{private}@) 
'[442,443]))
+    )[443,444])
+   (comment[453,497]@{%properties\n        %events\n        %methods}@) 
\n[497,498]
+   (identifier<506,515> arguments[506,515])
+   \n[515,516] end[520,523])
+  \n[523,525]
+  (methods<529,1568> methods[529,536] \n[536,538]
+   (function_definition<546,678> function[546,554] name: 
(identifier[555,568]@{simple_method}@)
+    (function_arguments<568,573> ([568,569] arguments: 
(identifier[569,572]@{obj}@) )[572,573])
+    \n[573,574]
+    (arguments_statement<586,631> arguments[586,595] \n[595,596]
+     (property<612,615> name: (identifier[612,615]@{obj}@))
+     \n[615,616] end[628,631])
+    (block<645,667>
+     (function_call<645,665> name: (identifier[645,649]@{disp}@) ([649,650]
+      (arguments<650,664>
+       argument: (field_expression<650,664> object: 
(identifier[650,653]@{obj}@) .[653,654] field: 
(identifier[654,664]@{normalprop}@)))
+      )[664,665])
+     ;[665,666] \n[666,667])
+    end[675,678])
+   \n[678,680]
+   (function_definition<688,1110> function[688,696]
+    (function_output<697,702> (identifier[697,700]@{obj}@) =[701,702])
+    name: (identifier[703,709]@{blocks}@)
+    (function_arguments<709,762> ([709,710]
+     arguments: (identifier<710,719> arguments[710,719])
+     ,[719,720]
+     (identifier<721,727> events[721,727])
+     ,[727,728] (identifier[729,739]@{properties}@) ,[739,740]
+     (identifier<741,748> methods[741,748])
+     ,[748,749]
+     (identifier<750,761> enumeration[750,761])
+     )[761,762])
+    \n[762,764]
+    (arguments_statement<776,929> arguments[776,785] \n[785,786]
+     (property<802,811>
+      name: (identifier<802,811> arguments[802,811]))
+     \n[811,812]
+     (property<828,834>
+      name: (identifier<828,834> events[828,834]))
+     \n[834,835]
+     (property<851,861> name: (identifier[851,861]@{properties}@))
+     \n[861,862]
+     (property<878,885>
+      name: (identifier<878,885> methods[878,885]))
+     \n[885,886]
+     (property<902,913>
+      name: (identifier<902,913> enumeration[902,913]))
+     \n[913,914] end[926,929])
+    (block<943,1099>
+     (assignment<943,963>
+      left: (field_expression<943,951> object: (identifier[943,946]@{obj}@) 
.[946,947] field: (identifier[947,951]@{prop}@))
+      =[952,953]
+      right: (identifier<954,963> arguments[954,963]))
+     ;[963,964]
+     (assignment<977,994>
+      left: (field_expression<977,985> object: (identifier[977,980]@{obj}@) 
.[980,981] field: (identifier[981,985]@{prop}@))
+      =[986,987]
+      right: (identifier<988,994> events[988,994]))
+     ;[994,995]
+     (assignment<1008,1029>
+      left: (field_expression<1008,1016> object: 
(identifier[1008,1011]@{obj}@) .[1011,1012] field: 
(identifier[1012,1016]@{prop}@))
+      =[1017,1018] right: (identifier[1019,1029]@{properties}@))
+     ;[1029,1030]
+     (assignment<1043,1061>
+      left: (field_expression<1043,1051> object: 
(identifier[1043,1046]@{obj}@) .[1046,1047] field: 
(identifier[1047,1051]@{prop}@))
+      =[1052,1053]
+      right: (identifier<1054,1061> methods[1054,1061]))
+     ;[1061,1062]
+     (assignment<1075,1097>
+      left: (field_expression<1075,1083> object: 
(identifier[1075,1078]@{obj}@) .[1078,1079] field: 
(identifier[1079,1083]@{prop}@))
+      =[1084,1085]
+      right: (identifier<1086,1097> enumeration[1086,1097]))
+     ;[1097,1098] \n[1098,1099])
+    end[1107,1110])
+   \n[1110,1112]
+   (function_definition<1120,1154> function[1120,1128] name: 
(identifier[1129,1139]@{properties}@)
+    (function_arguments<1139,1142> ([1139,1140]
+     arguments: (ignored_argument<1140,1141> ~[1140,1141])
+     )[1141,1142])
+    \n[1142,1143] end[1151,1154])
+   \n[1154,1156]
+   (function_definition<1164,1195> function[1164,1172]
+    name: (identifier<1173,1180> methods[1173,1180])
+    (function_arguments<1180,1183> ([1180,1181]
+     arguments: (ignored_argument<1181,1182> ~[1181,1182])
+     )[1182,1183])
+    \n[1183,1184] end[1192,1195])
+   \n[1195,1197]
+   (function_definition<1205,1235> function[1205,1213]
+    name: (identifier<1214,1220> events[1214,1220])
+    (function_arguments<1220,1223> ([1220,1221]
+     arguments: (ignored_argument<1221,1222> ~[1221,1222])
+     )[1222,1223])
+    \n[1223,1224] end[1232,1235])
+   \n[1235,1237]
+   (function_definition<1245,1279> function[1245,1253]
+    name: (identifier<1254,1263> arguments[1254,1263])
+    (function_arguments<1264,1267> ([1264,1265]
+     arguments: (ignored_argument<1265,1266> ~[1265,1266])
+     )[1266,1267])
+    \n[1267,1268] end[1276,1279])
+   \n[1279,1281]
+   (function_definition<1289,1324> function[1289,1297]
+    name: (identifier<1298,1309> enumeration[1298,1309])
+    (function_arguments<1309,1312> ([1309,1310]
+     arguments: (ignored_argument<1310,1311> ~[1310,1311])
+     )[1311,1312])
+    \n[1312,1313] end[1321,1324])
+   \n[1324,1326]
+   (function_definition<1334,1559> function[1334,1342] name: 
(identifier[1343,1351]@{usestuff}@)
+    (function_arguments<1351,1356> ([1351,1352] arguments: 
(identifier[1352,1355]@{obj}@) )[1355,1356])
+    (comment[1365,1403]@{% Try using the methods of this object}@) 
\n[1403,1404]
+    (block<1416,1548>
+     (field_expression<1416,1432> object: (identifier[1416,1419]@{obj}@) 
.[1419,1420]
+      field: (function_call<1420,1432> name: 
(identifier[1420,1430]@{properties}@) ([1430,1431] )[1431,1432]))
+     ;[1432,1433]
+     (field_expression<1446,1459> object: (identifier[1446,1449]@{obj}@) 
.[1449,1450]
+      field: 
+       (function_call<1450,1459>
+        name: (identifier<1450,1457> methods[1450,1457])
+        ([1457,1458] )[1458,1459]))
+     ;[1459,1460]
+     (field_expression<1473,1485> object: (identifier[1473,1476]@{obj}@) 
.[1476,1477]
+      field: 
+       (function_call<1477,1485>
+        name: (identifier<1477,1483> events[1477,1483])
+        ([1483,1484] )[1484,1485]))
+     ;[1485,1486]
+     (field_expression<1499,1515> object: (identifier[1499,1502]@{obj}@) 
.[1502,1503]
+      field: 
+       (function_call<1503,1515>
+        name: (identifier<1503,1512> arguments[1503,1512])
+        ([1513,1514] )[1514,1515]))
+     ;[1515,1516]
+     (field_expression<1529,1546> object: (identifier[1529,1532]@{obj}@) 
.[1532,1533]
+      field: 
+       (function_call<1533,1546>
+        name: (identifier<1533,1544> enumeration[1533,1544])
+        ([1544,1545] )[1545,1546]))
+     ;[1546,1547] \n[1547,1548])
+    end[1556,1559])
+   \n[1559,1561] end[1565,1568])
+  \n[1568,1570] end[1570,1573])
+ \n[1573,1574])

Reply via email to