diff --git a/daslib/rst.das b/daslib/rst.das index e470c06141..8c05deb99e 100644 --- a/daslib/rst.das +++ b/daslib/rst.das @@ -1322,7 +1322,7 @@ def document_classes(doc_file : file; mods : array) { let staticFieldPrefix = "{value.name}`" for_each_global(mod) $(gVar) { - if (string(gVar.name).starts_with(staticFieldPrefix)) { + if (!gVar.flags.private_variable && string(gVar.name).starts_with(staticFieldPrefix)) { var line : array push(line, "{value.name}.{string(gVar.name).slice(length(staticFieldPrefix))}") push(line, describe_type(gVar._type)) diff --git a/doc/source/stdlib/ast.rst b/doc/source/stdlib/ast.rst index 3911fdf5dc..5c6328e75f 100644 --- a/doc/source/stdlib/ast.rst +++ b/doc/source/stdlib/ast.rst @@ -5696,51 +5696,51 @@ Returns a new TypeInfo corresponding to the specified type. Adapter generation ++++++++++++++++++ - * :ref:`make_block_annotation (name: string; var someClassPtr: auto) : FunctionAnnotationPtr ` + * :ref:`make_block_annotation (name: string; var someClassPtr: auto) : FunctionAnnotationPtr ` * :ref:`make_block_annotation (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` * :ref:`make_block_type (blk: ExprBlock?) : smart_ptr\ ` * :ref:`make_call_macro (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` - * :ref:`make_call_macro (name: string; var someClassPtr: auto) : CallMacroPtr ` + * :ref:`make_call_macro (name: string; var someClassPtr: auto) : CallMacroPtr ` * :ref:`make_capture_macro (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` - * :ref:`make_capture_macro (name: string; var someClassPtr: auto) : CaptureMacroPtr ` + * :ref:`make_capture_macro (name: string; var someClassPtr: auto) : CaptureMacroPtr ` * :ref:`make_clone_structure (structure: Structure?) : smart_ptr\ ` * :ref:`make_comment_reader (class: void?; info: StructInfo const?) : smart_ptr\ ` - * :ref:`make_comment_reader (name: string; var someClassPtr: auto) : CommentReaderPtr ` + * :ref:`make_comment_reader (name: string; var someClassPtr: auto) : CommentReaderPtr ` * :ref:`make_enum_debug_info (helper: smart_ptr\; en: Enumeration const?) : EnumInfo? ` - * :ref:`make_enumeration_annotation (name: string; var someClassPtr: auto) : EnumerationAnnotationPtr ` + * :ref:`make_enumeration_annotation (name: string; var someClassPtr: auto) : EnumerationAnnotationPtr ` * :ref:`make_enumeration_annotation (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` * :ref:`make_for_loop_macro (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` - * :ref:`make_for_loop_macro (name: string; var someClassPtr: auto) : ForLoopMacroPtr ` - * :ref:`make_function_annotation (name: string; var someClassPtr: auto) : FunctionAnnotationPtr ` + * :ref:`make_for_loop_macro (name: string; var someClassPtr: auto) : ForLoopMacroPtr ` + * :ref:`make_function_annotation (name: string; var someClassPtr: auto) : FunctionAnnotationPtr ` * :ref:`make_function_annotation (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` * :ref:`make_function_debug_info (helper: smart_ptr\; fn: Function const?) : FuncInfo? ` * :ref:`make_invokable_type_debug_info (helper: smart_ptr\; blk: smart_ptr\; at: LineInfo) : FuncInfo? ` * :ref:`make_pass_macro (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` - * :ref:`make_pass_macro (name: string; var someClassPtr: auto) : PassMacroPtr ` - * :ref:`make_reader_macro (name: string; var someClassPtr: auto) : ReaderMacroPtr ` + * :ref:`make_pass_macro (name: string; var someClassPtr: auto) : PassMacroPtr ` + * :ref:`make_reader_macro (name: string; var someClassPtr: auto) : ReaderMacroPtr ` * :ref:`make_reader_macro (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` - * :ref:`make_simulate_macro (name: string; var someClassPtr: auto) : SimulateMacroPtr ` + * :ref:`make_simulate_macro (name: string; var someClassPtr: auto) : SimulateMacroPtr ` * :ref:`make_simulate_macro (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` * :ref:`make_struct_debug_info (helper: smart_ptr\; st: Structure const?) : StructInfo? ` * :ref:`make_struct_variable_debug_info (helper: smart_ptr\; st: Structure const?; var: FieldDeclaration const?) : VarInfo? ` - * :ref:`make_structure_annotation (name: string; var someClassPtr: auto) : StructureAnnotationPtr ` + * :ref:`make_structure_annotation (name: string; var someClassPtr: auto) : StructureAnnotationPtr ` * :ref:`make_structure_annotation (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` * :ref:`make_type_info (helper: smart_ptr\; info: TypeInfo?; type: smart_ptr\ const&) : TypeInfo? ` - * :ref:`make_type_macro (name: string; var someClassPtr: auto) : TypeMacroPtr ` + * :ref:`make_type_macro (name: string; var someClassPtr: auto) : TypeMacroPtr ` * :ref:`make_type_macro (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` * :ref:`make_typeinfo_macro (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` - * :ref:`make_typeinfo_macro (name: string; var someClassPtr: auto) : TypeInfoMacroPtr ` + * :ref:`make_typeinfo_macro (name: string; var someClassPtr: auto) : TypeInfoMacroPtr ` * :ref:`make_variable_debug_info (helper: smart_ptr\; var: Variable?) : VarInfo? ` - * :ref:`make_variant_macro (name: string; var someClassPtr: auto) : VariantMacroPtr ` + * :ref:`make_variant_macro (name: string; var someClassPtr: auto) : VariantMacroPtr ` * :ref:`make_variant_macro (name: string; class: void?; info: StructInfo const?) : smart_ptr\ ` - * :ref:`make_visitor (someClass: auto) : smart_ptr\ ` + * :ref:`make_visitor (someClass: auto) : smart_ptr\ ` * :ref:`make_visitor (class: void?; info: StructInfo const?) : smart_ptr\ ` make_block_annotation ^^^^^^^^^^^^^^^^^^^^^ -.. _function-ast_make_block_annotation_string_auto_0x287: +.. _function-ast_make_block_annotation_string_auto_0x288: .. das:function:: make_block_annotation(name: string; someClassPtr: auto) : FunctionAnnotationPtr @@ -5783,7 +5783,7 @@ Creates an adapter for the AstCallMacro interface. * **info** : :ref:`StructInfo `? implicit -.. _function-ast_make_call_macro_string_auto_0x2da: +.. _function-ast_make_call_macro_string_auto_0x2db: .. das:function:: make_call_macro(name: string; someClassPtr: auto) : CallMacroPtr @@ -5806,7 +5806,7 @@ Creates an adapter for the AstCaptureMacro interface. * **info** : :ref:`StructInfo `? implicit -.. _function-ast_make_capture_macro_string_auto_0x320: +.. _function-ast_make_capture_macro_string_auto_0x321: .. das:function:: make_capture_macro(name: string; someClassPtr: auto) : CaptureMacroPtr @@ -5836,7 +5836,7 @@ Creates an adapter for the AstCommentReader interface. * **info** : :ref:`StructInfo `? implicit -.. _function-ast_make_comment_reader_string_auto_0x2cc: +.. _function-ast_make_comment_reader_string_auto_0x2cd: .. das:function:: make_comment_reader(name: string; someClassPtr: auto) : CommentReaderPtr @@ -5857,7 +5857,7 @@ Generates an EnumInfo for the specified enumeration using the given DebugInfoHel make_enumeration_annotation ^^^^^^^^^^^^^^^^^^^^^^^^^^^ -.. _function-ast_make_enumeration_annotation_string_auto_0x2a3: +.. _function-ast_make_enumeration_annotation_string_auto_0x2a4: .. das:function:: make_enumeration_annotation(name: string; someClassPtr: auto) : EnumerationAnnotationPtr @@ -5891,7 +5891,7 @@ Creates an adapter for the AstForLoopMacro interface. * **info** : :ref:`StructInfo `? implicit -.. _function-ast_make_for_loop_macro_string_auto_0x312: +.. _function-ast_make_for_loop_macro_string_auto_0x313: .. das:function:: make_for_loop_macro(name: string; someClassPtr: auto) : ForLoopMacroPtr @@ -5901,7 +5901,7 @@ Creates an adapter for the AstForLoopMacro interface. make_function_annotation ^^^^^^^^^^^^^^^^^^^^^^^^ -.. _function-ast_make_function_annotation_string_auto_0x279: +.. _function-ast_make_function_annotation_string_auto_0x27a: .. das:function:: make_function_annotation(name: string; someClassPtr: auto) : FunctionAnnotationPtr @@ -5959,7 +5959,7 @@ Creates an adapter for the AstPassMacro interface. * **info** : :ref:`StructInfo `? implicit -.. _function-ast_make_pass_macro_string_auto_0x2f6: +.. _function-ast_make_pass_macro_string_auto_0x2f7: .. das:function:: make_pass_macro(name: string; someClassPtr: auto) : PassMacroPtr @@ -5969,7 +5969,7 @@ Creates an adapter for the AstPassMacro interface. make_reader_macro ^^^^^^^^^^^^^^^^^ -.. _function-ast_make_reader_macro_string_auto_0x2be: +.. _function-ast_make_reader_macro_string_auto_0x2bf: .. das:function:: make_reader_macro(name: string; someClassPtr: auto) : ReaderMacroPtr @@ -5990,7 +5990,7 @@ Creates an adapter for the AstReaderMacro interface. make_simulate_macro ^^^^^^^^^^^^^^^^^^^ -.. _function-ast_make_simulate_macro_string_auto_0x339: +.. _function-ast_make_simulate_macro_string_auto_0x33a: .. das:function:: make_simulate_macro(name: string; someClassPtr: auto) : SimulateMacroPtr @@ -6035,7 +6035,7 @@ Generates a VariableInfo for a structure field using the given DebugInfoHelper. make_structure_annotation ^^^^^^^^^^^^^^^^^^^^^^^^^ -.. _function-ast_make_structure_annotation_string_auto_0x295: +.. _function-ast_make_structure_annotation_string_auto_0x296: .. das:function:: make_structure_annotation(name: string; someClassPtr: auto) : StructureAnnotationPtr @@ -6069,7 +6069,7 @@ Generates a TypeInfo for the specified type using the given DebugInfoHelper. make_type_macro ^^^^^^^^^^^^^^^ -.. _function-ast_make_type_macro_string_auto_0x32c: +.. _function-ast_make_type_macro_string_auto_0x32d: .. das:function:: make_type_macro(name: string; someClassPtr: auto) : TypeMacroPtr @@ -6103,7 +6103,7 @@ Creates an adapter for the AstTypeInfoMacro interface. * **info** : :ref:`StructInfo `? implicit -.. _function-ast_make_typeinfo_macro_string_auto_0x2e8: +.. _function-ast_make_typeinfo_macro_string_auto_0x2e9: .. das:function:: make_typeinfo_macro(name: string; someClassPtr: auto) : TypeInfoMacroPtr @@ -6124,7 +6124,7 @@ Generates a VariableInfo for the specified variable using the given DebugInfoHel make_variant_macro ^^^^^^^^^^^^^^^^^^ -.. _function-ast_make_variant_macro_string_auto_0x304: +.. _function-ast_make_variant_macro_string_auto_0x305: .. das:function:: make_variant_macro(name: string; someClassPtr: auto) : VariantMacroPtr @@ -6145,7 +6145,7 @@ Creates an adapter for the AstVariantMacro interface. make_visitor ^^^^^^^^^^^^ -.. _function-ast_make_visitor_auto_0x2ae: +.. _function-ast_make_visitor_auto_0x2af: .. das:function:: make_visitor(someClass: auto) : smart_ptr @@ -6178,25 +6178,25 @@ Adapter application * :ref:`add_infer_macro (module: Module?; annotation: smart_ptr\&) ` * :ref:`add_lint_macro (module: Module?; annotation: smart_ptr\&) ` * :ref:`add_module_option (module: Module?; option: string; type: Type) ` - * :ref:`add_new_block_annotation (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_call_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_capture_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_comment_reader (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_contract_annotation (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_dirty_infer_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_enumeration_annotation (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_for_loop_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_function_annotation (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_global_lint_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_infer_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_lint_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_optimization_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_reader_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_simulate_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_structure_annotation (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_type_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_typeinfo_macro (name: string; var someClassPtr: auto) : auto ` - * :ref:`add_new_variant_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_block_annotation (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_call_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_capture_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_comment_reader (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_contract_annotation (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_dirty_infer_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_enumeration_annotation (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_for_loop_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_function_annotation (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_global_lint_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_infer_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_lint_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_optimization_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_reader_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_simulate_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_structure_annotation (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_type_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_typeinfo_macro (name: string; var someClassPtr: auto) : auto ` + * :ref:`add_new_variant_macro (name: string; var someClassPtr: auto) : auto ` * :ref:`add_optimization_macro (module: Module?; annotation: smart_ptr\&) ` * :ref:`add_reader_macro (module: Module?; annotation: smart_ptr\&) ` * :ref:`add_simulate_macro (module: Module?; annotation: smart_ptr\&) ` @@ -6365,7 +6365,7 @@ Adds a module-specific option accessible via the `options` keyword. * **type** : :ref:`Type ` -.. _function-ast_add_new_block_annotation_string_auto_0x345: +.. _function-ast_add_new_block_annotation_string_auto_0x346: .. das:function:: add_new_block_annotation(name: string; someClassPtr: auto) : auto @@ -6376,7 +6376,7 @@ Creates an AstBlockAnnotation adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_call_macro_string_auto_0x38c: +.. _function-ast_add_new_call_macro_string_auto_0x38d: .. das:function:: add_new_call_macro(name: string; someClassPtr: auto) : auto @@ -6387,7 +6387,7 @@ Creates an AstCallMacro adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_capture_macro_string_auto_0x36f: +.. _function-ast_add_new_capture_macro_string_auto_0x370: .. das:function:: add_new_capture_macro(name: string; someClassPtr: auto) : auto @@ -6398,7 +6398,7 @@ Creates an AstCaptureMacro adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_comment_reader_string_auto_0x386: +.. _function-ast_add_new_comment_reader_string_auto_0x387: .. das:function:: add_new_comment_reader(name: string; someClassPtr: auto) : auto @@ -6409,7 +6409,7 @@ Creates an AstCommentReader adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_contract_annotation_string_auto_0x351: +.. _function-ast_add_new_contract_annotation_string_auto_0x352: .. das:function:: add_new_contract_annotation(name: string; someClassPtr: auto) : auto @@ -6420,7 +6420,7 @@ Creates an AstContractAnnotation adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_dirty_infer_macro_string_auto_0x39e: +.. _function-ast_add_new_dirty_infer_macro_string_auto_0x39f: .. das:function:: add_new_dirty_infer_macro(name: string; someClassPtr: auto) : auto @@ -6431,7 +6431,7 @@ Creates an AstPassMacro adapter and adds it to the current module's dirty infer * **someClassPtr** : auto -.. _function-ast_add_new_enumeration_annotation_string_auto_0x35d: +.. _function-ast_add_new_enumeration_annotation_string_auto_0x35e: .. das:function:: add_new_enumeration_annotation(name: string; someClassPtr: auto) : auto @@ -6442,7 +6442,7 @@ Creates an AstEnumerationAnnotation adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_for_loop_macro_string_auto_0x369: +.. _function-ast_add_new_for_loop_macro_string_auto_0x36a: .. das:function:: add_new_for_loop_macro(name: string; someClassPtr: auto) : auto @@ -6453,7 +6453,7 @@ Creates an AstForLoopMacro adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_function_annotation_string_auto_0x34b: +.. _function-ast_add_new_function_annotation_string_auto_0x34c: .. das:function:: add_new_function_annotation(name: string; someClassPtr: auto) : auto @@ -6464,7 +6464,7 @@ Creates an AstFunctionAnnotation adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_global_lint_macro_string_auto_0x3aa: +.. _function-ast_add_new_global_lint_macro_string_auto_0x3ab: .. das:function:: add_new_global_lint_macro(name: string; someClassPtr: auto) : auto @@ -6475,7 +6475,7 @@ Creates an AstPassMacro adapter and adds it to the current module's global lint * **someClassPtr** : auto -.. _function-ast_add_new_infer_macro_string_auto_0x398: +.. _function-ast_add_new_infer_macro_string_auto_0x399: .. das:function:: add_new_infer_macro(name: string; someClassPtr: auto) : auto @@ -6486,7 +6486,7 @@ Creates an AstPassMacro adapter and adds it to the current module's infer pass. * **someClassPtr** : auto -.. _function-ast_add_new_lint_macro_string_auto_0x3a4: +.. _function-ast_add_new_lint_macro_string_auto_0x3a5: .. das:function:: add_new_lint_macro(name: string; someClassPtr: auto) : auto @@ -6497,7 +6497,7 @@ Creates an AstPassMacro adapter and adds it to the current module's lint pass. * **someClassPtr** : auto -.. _function-ast_add_new_optimization_macro_string_auto_0x3b0: +.. _function-ast_add_new_optimization_macro_string_auto_0x3b1: .. das:function:: add_new_optimization_macro(name: string; someClassPtr: auto) : auto @@ -6508,7 +6508,7 @@ Creates an AstPassMacro adapter and adds it to the current module's optimization * **someClassPtr** : auto -.. _function-ast_add_new_reader_macro_string_auto_0x381: +.. _function-ast_add_new_reader_macro_string_auto_0x382: .. das:function:: add_new_reader_macro(name: string; someClassPtr: auto) : auto @@ -6519,7 +6519,7 @@ Creates an AstReaderMacro adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_simulate_macro_string_auto_0x37b: +.. _function-ast_add_new_simulate_macro_string_auto_0x37c: .. das:function:: add_new_simulate_macro(name: string; someClassPtr: auto) : auto @@ -6530,7 +6530,7 @@ Creates an AstSimulateMacro adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_structure_annotation_string_auto_0x357: +.. _function-ast_add_new_structure_annotation_string_auto_0x358: .. das:function:: add_new_structure_annotation(name: string; someClassPtr: auto) : auto @@ -6541,7 +6541,7 @@ Creates an AstStructureAnnotation adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_type_macro_string_auto_0x375: +.. _function-ast_add_new_type_macro_string_auto_0x376: .. das:function:: add_new_type_macro(name: string; someClassPtr: auto) : auto @@ -6552,7 +6552,7 @@ Creates an AstTypeMacro adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_typeinfo_macro_string_auto_0x392: +.. _function-ast_add_new_typeinfo_macro_string_auto_0x393: .. das:function:: add_new_typeinfo_macro(name: string; someClassPtr: auto) : auto @@ -6563,7 +6563,7 @@ Creates an AstTypeInfoMacro adapter and adds it to the current module. * **someClassPtr** : auto -.. _function-ast_add_new_variant_macro_string_auto_0x363: +.. _function-ast_add_new_variant_macro_string_auto_0x364: .. das:function:: add_new_variant_macro(name: string; someClassPtr: auto) : auto diff --git a/doc/source/stdlib/ast_boost.rst b/doc/source/stdlib/ast_boost.rst index 14e4ac807f..50aa8d60ff 100644 --- a/doc/source/stdlib/ast_boost.rst +++ b/doc/source/stdlib/ast_boost.rst @@ -1027,10 +1027,10 @@ Creates an ``AnnotationDeclaration`` for the named annotation (with optional typ Expression generation +++++++++++++++++++++ - * :ref:`convert_to_expression (var value: auto ==const) : auto ` - * :ref:`convert_to_expression (value: auto ==const; at: LineInfo) : auto ` - * :ref:`convert_to_expression (var value: auto& ==const; at: LineInfo) : auto ` - * :ref:`convert_to_expression (value: auto ==const) : auto ` + * :ref:`convert_to_expression (var value: auto ==const) : auto ` + * :ref:`convert_to_expression (value: auto ==const; at: LineInfo) : auto ` + * :ref:`convert_to_expression (var value: auto& ==const; at: LineInfo) : auto ` + * :ref:`convert_to_expression (value: auto ==const) : auto ` * :ref:`make_static_assert_false (text: string; at: LineInfo) : smart_ptr\ ` * :ref:`override_method (var str: StructurePtr; name: string; funcName: string) : bool ` * :ref:`panic_expr_as () : void? ` @@ -1039,7 +1039,7 @@ Expression generation convert_to_expression ^^^^^^^^^^^^^^^^^^^^^ -.. _function-ast_boost_convert_to_expression__auto__eq__eq_const_0x3a5: +.. _function-ast_boost_convert_to_expression__auto__eq__eq_const_0x3a8: .. das:function:: convert_to_expression(value: auto ==const) : auto @@ -1048,15 +1048,15 @@ Converts a runtime value of any supported type to an equivalent AST ``Expression :Arguments: * **value** : auto! -.. _function-ast_boost_convert_to_expression_auto__eq__eq_const_LineInfo_0x39c: +.. _function-ast_boost_convert_to_expression_auto__eq__eq_const_LineInfo_0x39f: .. das:function:: convert_to_expression(value: auto ==const; at: LineInfo) : auto -.. _function-ast_boost_convert_to_expression__auto_ref___eq__eq_const_LineInfo_0x393: +.. _function-ast_boost_convert_to_expression__auto_ref___eq__eq_const_LineInfo_0x396: .. das:function:: convert_to_expression(value: auto& ==const; at: LineInfo) : auto -.. _function-ast_boost_convert_to_expression_auto__eq__eq_const_0x3aa: +.. _function-ast_boost_convert_to_expression_auto__eq__eq_const_0x3ad: .. das:function:: convert_to_expression(value: auto ==const) : auto diff --git a/doc/source/stdlib/bitfield_trait.rst b/doc/source/stdlib/bitfield_trait.rst index 824f1f7cf0..ed9b4684e7 100644 --- a/doc/source/stdlib/bitfield_trait.rst +++ b/doc/source/stdlib/bitfield_trait.rst @@ -53,7 +53,7 @@ Iteration +++++++++ * :ref:`each (argT: auto) : auto ` - * :ref:`each_bit_name (argT: auto) : auto ` + * :ref:`each_bit_name (argT: auto) : auto ` .. _function-bitfield_trait_each_auto_0x16: @@ -64,7 +64,7 @@ Iterates over the names of a bitfield type, yielding each bit as a bitfield valu :Arguments: * **argT** : auto -.. _function-bitfield_trait_each_bit_name_auto_0x39: +.. _function-bitfield_trait_each_bit_name_auto_0x47: .. das:function:: each_bit_name(argT: auto) : auto diff --git a/doc/source/stdlib/builtin.rst b/doc/source/stdlib/builtin.rst index 18a4d66f47..e0b7f0e383 100644 --- a/doc/source/stdlib/builtin.rst +++ b/doc/source/stdlib/builtin.rst @@ -736,7 +736,7 @@ Containers * :ref:`lock_forever (var Tab: table\|table\#) : table\# ` * :ref:`modify (var Tab: table\; at: keyT|keyT#; blk: block\<(p:valT):valT\>) ` * :ref:`move_to_local (var a: auto(TT)&) : TT ` - * :ref:`move_to_ref (var a: auto&; var b: auto) : auto ` + * :ref:`move_to_ref (var a: auto&; var b: auto) : auto ` * :ref:`next (var it: iterator\; var value: TT&) : bool ` * :ref:`nothing (var it: iterator\) : iterator\ ` * :ref:`pop (var Arr: array\) : auto ` @@ -769,11 +769,11 @@ Containers * :ref:`sort (var a: array\|array\#; cmp: block\<(x:TT;y:TT):bool\>) : auto ` * :ref:`sort (var a: auto(TT)[]|auto(TT)[]#) : auto ` * :ref:`sort (var a: auto(TT)[]|auto(TT)[]#; cmp: block\<(x:TT;y:TT):bool\>) : auto ` - * :ref:`subarray (a: auto(TT)[]; r: urange) : auto ` + * :ref:`subarray (a: auto(TT)[]; r: urange) : auto ` * :ref:`subarray (a: array\; r: urange) : auto ` * :ref:`subarray (a: array\; r: range) : auto ` * :ref:`subarray (var a: array\; r: range) : auto ` - * :ref:`subarray (a: auto(TT)[]; r: range) : auto ` + * :ref:`subarray (a: auto(TT)[]; r: range) : auto ` * :ref:`to_array (a: auto(TT)[]) : array\ ` * :ref:`to_array (var it: iterator\) : array\ ` * :ref:`to_array_move (var a: auto(TT) ==const) : array\ ` @@ -1472,7 +1472,7 @@ Moves the value referenced by `a` onto the stack as a local copy and returns it, :Arguments: * **a** : auto(TT)\ & -.. _function-builtin_move_to_ref_auto_ref__auto_0x80c: +.. _function-builtin_move_to_ref_auto_ref__auto_0x813: .. das:function:: move_to_ref(a: auto&; b: auto) : auto @@ -1718,7 +1718,7 @@ Sorts a dynamic array in place in ascending order using the default comparison f subarray ^^^^^^^^ -.. _function-builtin_subarray_autoTT_lb__rb__urange_0x7c2: +.. _function-builtin_subarray_autoTT_lb__rb__urange_0x7c9: .. das:function:: subarray(a: auto(TT)[]; r: urange) : auto @@ -1741,7 +1741,7 @@ Creates and returns a new dynamic array containing a copy of elements from fixed .. das:function:: subarray(a: array; r: range) : auto -.. _function-builtin_subarray_autoTT_lb__rb__range_0x7b1: +.. _function-builtin_subarray_autoTT_lb__rb__range_0x7b8: .. das:function:: subarray(a: auto(TT)[]; r: range) : auto @@ -2068,6 +2068,7 @@ Stores a `smart_ptr` `data` into gc0 storage under the specified `name`, a Smart ptr infrastructure ++++++++++++++++++++++++ + * :ref:`add_ptr_ref (src: auto(TT)?) : smart_ptr\ ` * :ref:`add_ptr_ref (src: smart_ptr\) : smart_ptr\ ` * :ref:`get_const_ptr (src: smart_ptr\) : TT? ` * :ref:`get_ptr (var src: smart_ptr\ ==const) : TT? ` @@ -2080,14 +2081,26 @@ Smart ptr infrastructure * :ref:`smart_ptr_is_valid (dest: smart_ptr\) : bool ` * :ref:`smart_ptr_use_count (ptr: smart_ptr\) : uint ` -.. _function-builtin_add_ptr_ref_smart_ptr_ls_autoTT_gr_: -.. das:function:: add_ptr_ref(src: smart_ptr) : smart_ptr +add_ptr_ref +^^^^^^^^^^^ -Increments the reference count of the smart pointer `src` and returns a new smart_ptr that shares ownership of the same object. +.. _function-builtin_add_ptr_ref_autoTT_q_: +.. das:function:: add_ptr_ref(src: auto(TT)?) : smart_ptr -:Arguments: * **src** : smart_ptr +Wraps a raw pointer ``src`` of type ``TT?`` into a ``smart_ptr`` by incrementing the reference count. +Commonly used to bridge AST node fields (which are raw pointers like ``Structure?``, ``Enumeration?``) to API functions that expect ``smart_ptr``. +The overload accepting ``smart_ptr`` adds an additional reference to an existing smart pointer, returning a new ``smart_ptr`` that shares ownership. + + +:Arguments: * **src** : auto(TT)? + +.. _function-builtin_add_ptr_ref_smart_ptr_ls_autoTT_gr_: + +.. das:function:: add_ptr_ref(src: smart_ptr) : smart_ptr + +---- .. _function-builtin_get_const_ptr_smart_ptr_ls_autoTT_gr_: @@ -2880,9 +2893,9 @@ Formats a `uint8` value as a string using the given `format` specifier (followin Argument consumption ++++++++++++++++++++ - * :ref:`consume_argument (var a: auto(TT)&) : TT& ` + * :ref:`consume_argument (var a: auto(TT)&) : TT& ` -.. _function-builtin_consume_argument_autoTT_ref__0x843: +.. _function-builtin_consume_argument_autoTT_ref__0x84a: .. das:function:: consume_argument(a: auto(TT)&) : TT& @@ -3195,7 +3208,7 @@ Algorithms * :ref:`count (start: int = 0; step: int = 1) : iterator\ ` * :ref:`iter_range (foo: auto) : auto ` - * :ref:`swap (var a: auto(TT)&; var b: auto(TT)&) : auto ` + * :ref:`swap (var a: auto(TT)&; var b: auto(TT)&) : auto ` * :ref:`ucount (start: uint = 0x0; step: uint = 0x1) : iterator\ ` .. _function-builtin_count_int_int: @@ -3218,7 +3231,7 @@ Creates a `range` from `0` to the length of the given iterable `foo`, useful for :Arguments: * **foo** : auto -.. _function-builtin_swap_autoTT_ref__autoTT_ref__0x7a9: +.. _function-builtin_swap_autoTT_ref__autoTT_ref__0x7b0: .. das:function:: swap(a: auto(TT)&; b: auto(TT)&) : auto diff --git a/doc/source/stdlib/detail/ast.rst b/doc/source/stdlib/detail/ast.rst index 1b74cce62e..30c92a49b6 100644 --- a/doc/source/stdlib/detail/ast.rst +++ b/doc/source/stdlib/detail/ast.rst @@ -178,6 +178,8 @@ .. |handmade/method-ast-AstCaptureMacro.captureFunction| replace:: to be documented in |handmade/method-ast-AstCaptureMacro.captureFunction|.rst +.. |handmade/method-ast-AstCaptureMacro.releaseFunction| replace:: to be documented in |handmade/method-ast-AstCaptureMacro.releaseFunction|.rst + .. |handmade/class-ast-AstTypeMacro| replace:: to be documented in |handmade/class-ast-AstTypeMacro|.rst .. |handmade/method-ast-AstTypeMacro.visit| replace:: to be documented in |handmade/method-ast-AstTypeMacro.visit|.rst diff --git a/doc/source/stdlib/detail/interfaces.rst b/doc/source/stdlib/detail/interfaces.rst index 07486d4d86..9674952c81 100644 --- a/doc/source/stdlib/detail/interfaces.rst +++ b/doc/source/stdlib/detail/interfaces.rst @@ -6,6 +6,8 @@ .. |detail/method-interfaces-ImplementsMacro.apply| replace:: to be documented in |detail/method-interfaces-ImplementsMacro.apply|.rst +.. |detail/method-interfaces-ImplementsMacro.finish| replace:: to be documented in |detail/method-interfaces-ImplementsMacro.finish|.rst + .. |detail/class-interfaces-InterfaceAsIs| replace:: to be documented in |detail/class-interfaces-InterfaceAsIs|.rst .. |detail/method-interfaces-InterfaceAsIs.visitExprIsVariant| replace:: to be documented in |detail/method-interfaces-InterfaceAsIs.visitExprIsVariant|.rst diff --git a/doc/source/stdlib/detail/structure_macro-interfaces-implements.rst b/doc/source/stdlib/detail/structure_macro-interfaces-implements.rst index 8c04c33f43..46d2ec4fdb 100644 --- a/doc/source/stdlib/detail/structure_macro-interfaces-implements.rst +++ b/doc/source/stdlib/detail/structure_macro-interfaces-implements.rst @@ -1,3 +1,11 @@ Generates interface bindings for a struct. Creates a proxy class that delegates interface method calls to the struct's own methods, and adds a ``get`InterfaceName`` method that lazily constructs the proxy. Applied via ``[implements(InterfaceName)]``. + +If the interface inherits from a parent interface (``class IChild : IParent``), +ancestor getters are generated automatically so that ``is``/``as``/``?as`` work +with all ancestor interfaces. + +At ``finish`` time, verifies that all abstract interface methods are implemented. +Methods with default bodies in the interface class are optional — the proxy +inherits them via class hierarchy. diff --git a/doc/source/stdlib/handmade/module-interfaces.rst b/doc/source/stdlib/handmade/module-interfaces.rst index ca97bc0ac9..e1711578b0 100644 --- a/doc/source/stdlib/handmade/module-interfaces.rst +++ b/doc/source/stdlib/handmade/module-interfaces.rst @@ -3,6 +3,13 @@ It provides the ``[interface]`` annotation for defining abstract interfaces with virtual method tables, supporting multiple implementations and dynamic dispatch without class inheritance. +**Features:** + +- Interface inheritance (``class IChild : IParent``) +- Default method implementations (non-abstract methods) +- Compile-time completeness checking (error 30111 on missing methods) +- ``is``/``as``/``?as`` operators via the ``InterfaceAsIs`` variant macro + All functions and symbols are in "interfaces" module, use require to get access to it. .. code-block:: das @@ -15,24 +22,25 @@ Example: require daslib/interfaces - [interface] - class IGreeter { - def abstract greet(name : string) : string - } - - class MyGreeter { - def greet(name : string) : string { - return "Hello, {name}!" - } - } + [interface] + class IGreeter { + def abstract greet(name : string) : string + } - [export] - def main() { - var obj = new MyGreeter() - print("{obj->greet("world")}\n") - unsafe { - delete obj - } + [implements(IGreeter)] + class MyGreeter { + def IGreeter`greet(name : string) : string { + return "Hello, {name}!" } - // output: - // Hello, world! + } + + [export] + def main() { + var obj = new MyGreeter() + var greeter = obj as IGreeter + print("{greeter->greet("world")}\n") + } + // output: Hello, world! + +See also: :ref:`Interfaces tutorial ` for a +complete walkthrough. diff --git a/doc/source/stdlib/interfaces.rst b/doc/source/stdlib/interfaces.rst index 7a026443e3..ff05a26c37 100644 --- a/doc/source/stdlib/interfaces.rst +++ b/doc/source/stdlib/interfaces.rst @@ -38,7 +38,6 @@ Example: [implements(IGreeter)] class MyGreeter { - def MyGreeter() { pass } def IGreeter`greet(name : string) : string { return "Hello, {name}!" } @@ -98,15 +97,9 @@ If the interface inherits from a parent interface (``class IChild : IParent``), ancestor getters are generated automatically so that ``is``/``as``/``?as`` work with all ancestor interfaces. -At compile time, verifies that all abstract interface methods are implemented. +At ``finish`` time, verifies that all abstract interface methods are implemented. Methods with default bodies in the interface class are optional — the proxy inherits them via class hierarchy. -+++++++++++++++++++ -Private helper -+++++++++++++++++++ -.. das:function:: is_interface_struct(st : Structure?) - - Returns ``true`` when the structure carries the ``[interface]`` annotation.