package com.redhat.ceylon.compiler.java.metadata;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 *  Marks a parameter of {@code Callable} type as being a functional parameter
 *  (i.e. having {@code Method} as its model)
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.PARAMETER})
public @interface FunctionalParameter {

}

@@ -212,17 +212,16 @@
 %0A%0A/**%0A *
- 
  Marks a
@@ -290,17 +290,16 @@
 meter%0A *
- 
  (i.e. h
@@ -446,11 +446,599 @@
 meter %7B%0A
+    /** %0A     * %3Cp%3EThe names of the parameters of this functional parameter. %0A     * Because a functional parameter can itself have functional parameters,%0A     * and because of the possibility of methods with multiple %0A     * parameter lists this is not a simple name. In general values should%0A     * conform to the %7B@code input%7D production of the following grammar:%3C/p%3E%0A     *  %0A     * %3Cpre%3E%0A     * input     ::= nameList ( nameList )*%0A     * nameList  ::= '(' ( name ( ',' name )* )? ')'%0A     * name      ::= identifier ( nameList )*%0A     * %3C/pre%3E%0A     */%0A    String value() default %22%22;
 %0A%7D%0A

Add a value to @FunctionalParameter so there's somewhere to encode parameter names (see ceylon/ceylon-compiler#1515)