• Daniel Clifford's avatar
    [torque] Implement implicit parameters · 9958694f
    Daniel Clifford authored
    The implicit parameter syntax adds a second parameter list
    before the explicit parameter list when declaring macros, builtins and
    runtime functions:
    
      extern macro MyMacro(implicit a: Smi)(b: Oddball);
    
    when calling the macro, only the formal parameters can be provided
    at the call site. The implicit parameters are implicitly looked-up
    by name in the scope of the call and prepended to the explicit parameter
    list. The values that are found by name for each implicit parameter must
    be castable the corresponding implicit parameter type:
    
      MyMacro(Null);  // Error, a is not defined
      ...
      const a: Smi = 0;
      MyMacro(Null);  // OK
      ...
      const a: Object = 0;
      MyMacro(Null);  // Error, a has wrong type
    
    For external macros, builtins and runtime functions, the formal
    parameter list expected on the C++ side is the concatenation of the
    implicit and explicit parameter lists.
    
    As a drive-by: fix the formatting of typeswitch statements in the
    the presence of deferred-marked blocks and funky white space.
    
    Bug: v8:7793
    Change-Id: I40da8405c706d7cdeca35367c9c954d0b33f6bf4
    Reviewed-on: https://chromium-review.googlesource.com/c/1270996
    Commit-Queue: Daniel Clifford <danno@chromium.org>
    Reviewed-by: 's avatarTobias Tebbi <tebbi@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#56555}
    9958694f
file-visitor.cc 3.1 KB