--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 (like TPersistent, 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=implicit command-line option then no members will be ever considered as having an implicit visibility.