From 8e2ec999394c77741241ef1a12728b11195961c8 Mon Sep 17 00:00:00 2001
From: Lukas Larsson
Date: Mon, 21 Mar 2016 17:53:26 +0100
Subject: erts: Document erlang:match_spec_test/3
OTP-13501
---
erts/doc/src/erlang.xml | 42 ++++++++++++++++++++++++++++++++++++++++++
erts/preloaded/src/erlang.erl | 8 ++++----
lib/stdlib/doc/src/ets.xml | 2 ++
3 files changed, 48 insertions(+), 4 deletions(-)
diff --git a/erts/doc/src/erlang.xml b/erts/doc/src/erlang.xml
index d6fe585c8d..fde04504c8 100644
--- a/erts/doc/src/erlang.xml
+++ b/erts/doc/src/erlang.xml
@@ -2612,6 +2612,48 @@ os_prompt%
+
+
+ Test that a match specification works
+
+
+ This function is a utility to test a match_spec used in calls to
+ ets:select/2 and
+ erlang:trace_pattern/3.
+ The function both tests MatchSpec for "syntactic" correctness and
+ runs the match_spec against the object. If the match_spec contains
+ errors, the tuple {error, Errors} is returned where Errors is a list
+ of natural language descriptions of what was wrong with the match_spec.
+
+
+ If the Type is table the object to match
+ against should be a tuple. The function then returns
+ {ok,Result,[],Warnings} where Result is what would have been the
+ result in a real ets:select/2 call or false if the match_spec does
+ not match the object tuple.
+
+
+
+ If Type is trace the object to match
+ against should be a list. The function returns
+ {ok, Result, Flags, Warnings} where Result is true if a trace
+ message should be emitted, false if a trace message should not
+ be emitted or the message term to be appended to the trace message.
+ Flags is a list containing all the trace flags that will be enabled,
+ at the moment this is only return_trace.
+
+
+
+ This is a useful debugging and test tool, especially when writing complicated
+ match specifications.
+
+
+ See also
+ ets:test_ms/2.
+
+
+
+
Returns the largest of two terms.
diff --git a/erts/preloaded/src/erlang.erl b/erts/preloaded/src/erlang.erl
index 40d0abd321..3cc17014ff 100644
--- a/erts/preloaded/src/erlang.erl
+++ b/erts/preloaded/src/erlang.erl
@@ -1163,10 +1163,10 @@ map_size(_Map) ->
erlang:nif_error(undefined).
%% match_spec_test/3
--spec erlang:match_spec_test(P1, P2, P3) -> TestResult when
- P1 :: [term()] | tuple(),
- P2 :: term(),
- P3 :: table | trace,
+-spec erlang:match_spec_test(MatchAgainst, MatchSpec, Type) -> TestResult when
+ MatchAgainst :: [term()] | tuple(),
+ MatchSpec :: term(),
+ Type :: table | trace,
TestResult :: {ok, term(), [return_trace], [ {error | warning, string()} ]} | {error, [ {error | warning, string()} ]}.
match_spec_test(_P1, _P2, _P3) ->
erlang:nif_error(undefined).
diff --git a/lib/stdlib/doc/src/ets.xml b/lib/stdlib/doc/src/ets.xml
index 4e430d101e..2d69c201bc 100644
--- a/lib/stdlib/doc/src/ets.xml
+++ b/lib/stdlib/doc/src/ets.xml
@@ -1621,6 +1621,8 @@ true
if the match_spec does not match the object Tuple.
This is a useful debugging and test tool, especially when
writing complicated ets:select/2 calls.
+ See also:
+ erlang:match_spec_test/3.
--
cgit v1.2.3