--implicit-visibility command-line option
When you declare a class, ObjectPascal rules say that the default ("implicit") visibility of members is public, unless the class is declared within {$M+} state or the class inherits from another class
declared in {$M+} state (like TPersistent) — then it’s published. For example:
type
TMyClass = class(TObject)
// this field is public
MyField: Integer;
end;
{$M+}
TMyClass2 = class(TObject)
// this field is published
MyField: Integer;
end;
However, PasDoc cannot always correctly implement this behavior, because we don’t know all your ancestor classes (unlike the compiler). For example:
uses Classes;
type
TMyClass = class(TComponent)
// this is published, but PasDoc doesn't know that
MyField: Integer;
end;
Therefore you can customize how we treat members with "implicit visibility" (i.e. members without an explicit visibility section) using the command-line option --implicit-visibility. It has the following possible values:
- --implicit-visibility=public
-
Visibility of implicit members is public, unless the class is declared within
{$M+}state, then visibility is published. This is the default setting. - --implicit-visibility=published
-
Visibility of implicit members is always published. Use this if you always descend from classes declared in
{$M+}state (likeTPersistent,TComponent,TForm). - --implicit-visibility=implicit
-
Assign to the implicit members a special invented visibility level, which we call implicit. The --visible-members option allows to control whether they are displayed.
If you don’t use
--implicit-visibility=implicitcommand-line option then no members will be ever considered as having an implicit visibility.