built-in method

permission_error/3

Description

permission_error(Operation, Permission, Culprit)

Throws a permission error. Used when an operation is not allowed. For example, sending a message for a predicate that is not within the scope of the sender. This built-in method is declared private and thus cannot be used as a message to an object. Calling this predicate is equivalent to the following sequence of goals:

...,
context(Context),
throw(error(permission_error(Operation,Permission,Culprit), Context)).

This allows the user to generate errors in the same format used by the runtime.

Possible values for Operation include:

  • access

  • create

  • declare

  • define

  • modify

  • open

  • input

  • output

  • reposition

  • repeat

Possible values for Permission include:

  • predicate_declaration

  • protected_predicate

  • private_predicate

  • static_predicate

  • dynamic_predicate

  • predicate

  • non_terminal

  • database

  • object

  • static_object

  • static_protocol

  • static_category

  • entity_relation

  • operator

  • flag

  • engine

  • binary_stream

  • text_stream

  • source_sink

  • stream

  • past_end_of_stream

The value of Culprit is the argument or one of its sub-terms that caused the error.

Modes and number of proofs

permission_error(@nonvar, @nonvar, @nonvar) - error

Errors

When called:
permission_error(Operation, Permission, Culprit)

Examples

...,
\+ writable(File),
permission_error(modify, file, File).