This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 225603
Collapse All | Expand All

(-)a/php.editor/src/org/netbeans/modules/php/editor/elements/BaseFunctionElementSupport.java (-8 / +22 lines)
Lines 43-48 Link Here
43
package org.netbeans.modules.php.editor.elements;
43
package org.netbeans.modules.php.editor.elements;
44
44
45
import java.util.Collection;
45
import java.util.Collection;
46
import java.util.Collections;
46
import java.util.List;
47
import java.util.List;
47
import java.util.Set;
48
import java.util.Set;
48
import org.netbeans.modules.php.editor.api.QualifiedName;
49
import org.netbeans.modules.php.editor.api.QualifiedName;
Lines 57-79 Link Here
57
 * @author Radek Matous
58
 * @author Radek Matous
58
 */
59
 */
59
public class BaseFunctionElementSupport  {
60
public class BaseFunctionElementSupport  {
60
    private final List<ParameterElement> parameters;
61
    private final Parameters parameters;
61
    private final Set<TypeResolver> returnTypes;
62
    private final ReturnTypes returnTypes;
62
63
63
    protected BaseFunctionElementSupport(
64
    protected BaseFunctionElementSupport(Parameters parameters, ReturnTypes returnTypes) {
64
            final List<ParameterElement> parameters,
65
            final Set<TypeResolver> returnTypes) {
66
67
        this.parameters = parameters;
65
        this.parameters = parameters;
68
        this.returnTypes = returnTypes;
66
        this.returnTypes = returnTypes;
69
    }
67
    }
70
68
71
    public final List<ParameterElement> getParameters() {
69
    public final List<ParameterElement> getParameters() {
72
        return parameters;
70
        return parameters.getParameters();
73
    }
71
    }
74
72
75
    public final Collection<TypeResolver> getReturnTypes() {
73
    public final Collection<TypeResolver> getReturnTypes() {
76
        return returnTypes;
74
        return returnTypes.getReturnTypes();
77
    }
75
    }
78
76
79
77
Lines 171-174 Link Here
171
        return template.toString();
169
        return template.toString();
172
    }
170
    }
173
171
172
    public interface Parameters {
173
        List<ParameterElement> getParameters();
174
    }
175
176
    public interface ReturnTypes {
177
        ReturnTypes NONE = new ReturnTypes() {
178
179
            @Override
180
            public Set<TypeResolver> getReturnTypes() {
181
                return Collections.<TypeResolver>emptySet();
182
            }
183
        };
184
185
        Set<TypeResolver> getReturnTypes();
186
    }
187
174
}
188
}
(-)a/php.editor/src/org/netbeans/modules/php/editor/elements/FunctionElementImpl.java (-5 / +60 lines)
Lines 76-83 Link Here
76
            final int offset,
76
            final int offset,
77
            final String fileUrl,
77
            final String fileUrl,
78
            final ElementQuery elementQuery,
78
            final ElementQuery elementQuery,
79
            final List<ParameterElement> parameters,
79
            final BaseFunctionElementSupport.Parameters parameters,
80
            final Set<TypeResolver> returnTypes,
80
            final BaseFunctionElementSupport.ReturnTypes returnTypes,
81
            final boolean isDeprecated) {
81
            final boolean isDeprecated) {
82
        super(qualifiedName.toName().toString(), qualifiedName.toNamespaceName().toString(),
82
        super(qualifiedName.toName().toString(), qualifiedName.toNamespaceName().toString(),
83
                fileUrl, offset, elementQuery, isDeprecated);
83
                fileUrl, offset, elementQuery, isDeprecated);
Lines 109-115 Link Here
109
        if (matchesQuery(query, signParser)) {
109
        if (matchesQuery(query, signParser)) {
110
            retval = new FunctionElementImpl(signParser.getQualifiedName(),
110
            retval = new FunctionElementImpl(signParser.getQualifiedName(),
111
                    signParser.getOffset(), indexResult.getUrl().toString(),
111
                    signParser.getOffset(), indexResult.getUrl().toString(),
112
                    indexScopeQuery, signParser.getParameters(), signParser.getReturnTypes(),
112
                    indexScopeQuery,  new ParametersProxy(signParser), new ReturnTypesProxy(signParser),
113
                    signParser.isDeprecated());
113
                    signParser.isDeprecated());
114
        }
114
        }
115
        return retval;
115
        return retval;
Lines 122-129 Link Here
122
        final QualifiedName fullyQualifiedName = namespace != null ? namespace.getFullyQualifiedName() : QualifiedName.createForDefaultNamespaceName();
122
        final QualifiedName fullyQualifiedName = namespace != null ? namespace.getFullyQualifiedName() : QualifiedName.createForDefaultNamespaceName();
123
        return new FunctionElementImpl(
123
        return new FunctionElementImpl(
124
                fullyQualifiedName.append(info.getName()), info.getRange().getStart(),
124
                fullyQualifiedName.append(info.getName()), info.getRange().getStart(),
125
                fileQuery.getURL().toExternalForm(), fileQuery, info.getParameters(),
125
                fileQuery.getURL().toExternalForm(), fileQuery, new ParametersImpl(info.getParameters()),
126
                TypeResolverImpl.parseTypes(VariousUtils.getReturnTypeFromPHPDoc(fileQuery.getResult().getProgram(), node)),
126
                new ReturnTypesImpl(TypeResolverImpl.parseTypes(VariousUtils.getReturnTypeFromPHPDoc(fileQuery.getResult().getProgram(), node))),
127
                VariousUtils.isDeprecatedFromPHPDoc(fileQuery.getResult().getProgram(), node));
127
                VariousUtils.isDeprecatedFromPHPDoc(fileQuery.getResult().getProgram(), node));
128
    }
128
    }
129
129
Lines 232-235 Link Here
232
            return signature.integer(6) == 1;
232
            return signature.integer(6) == 1;
233
        }
233
        }
234
    }
234
    }
235
236
    private static final class ParametersImpl implements BaseFunctionElementSupport.Parameters {
237
        private final List<ParameterElement> parameters;
238
239
        public ParametersImpl(List<ParameterElement> parameters) {
240
            this.parameters = parameters;
241
        }
242
243
        @Override
244
        public List<ParameterElement> getParameters() {
245
            return parameters;
246
        }
247
248
    }
249
250
    private static final class ParametersProxy implements BaseFunctionElementSupport.Parameters {
251
        private final FunctionSignatureParser functionSignatureParser;
252
253
        public ParametersProxy(FunctionSignatureParser functionSignatureParser) {
254
            this.functionSignatureParser = functionSignatureParser;
255
        }
256
257
        @Override
258
        public List<ParameterElement> getParameters() {
259
            return functionSignatureParser.getParameters();
260
        }
261
    }
262
263
    private static final class ReturnTypesImpl implements BaseFunctionElementSupport.ReturnTypes {
264
        private final Set<TypeResolver> returnTypes;
265
266
        public ReturnTypesImpl(Set<TypeResolver> returnTypes) {
267
            this.returnTypes = returnTypes;
268
        }
269
270
        @Override
271
        public Set<TypeResolver> getReturnTypes() {
272
            return returnTypes;
273
        }
274
275
    }
276
277
    private static final class ReturnTypesProxy implements BaseFunctionElementSupport.ReturnTypes {
278
        private final FunctionSignatureParser functionSignatureParser;
279
280
        public ReturnTypesProxy(FunctionSignatureParser functionSignatureParser) {
281
            this.functionSignatureParser = functionSignatureParser;
282
        }
283
284
        @Override
285
        public Set<TypeResolver> getReturnTypes() {
286
            return functionSignatureParser.getReturnTypes();
287
        }
288
289
    }
235
}
290
}
(-)a/php.editor/src/org/netbeans/modules/php/editor/elements/MethodElementImpl.java (-7 / +62 lines)
Lines 87-94 Link Here
87
            final int flags,
87
            final int flags,
88
            final String fileUrl,
88
            final String fileUrl,
89
            final ElementQuery elementQuery,
89
            final ElementQuery elementQuery,
90
            final List<ParameterElement> parameters,
90
            final BaseFunctionElementSupport.Parameters parameters,
91
            final Set<TypeResolver> returnTypes,
91
            final BaseFunctionElementSupport.ReturnTypes returnTypes,
92
            final boolean isDeprecated) {
92
            final boolean isDeprecated) {
93
        super(methodName, enclosingType.getName(), fileUrl, offset, elementQuery, isDeprecated);
93
        super(methodName, enclosingType.getName(), fileUrl, offset, elementQuery, isDeprecated);
94
        final boolean isFromInterface = enclosingType.isInterface();
94
        final boolean isFromInterface = enclosingType.isInterface();
Lines 119-125 Link Here
119
119
120
    public static MethodElement createMagicMethod(final TypeElement type, String methodName, int flags, String... arguments) {
120
    public static MethodElement createMagicMethod(final TypeElement type, String methodName, int flags, String... arguments) {
121
        MethodElement retval = new MethodElementImpl(type, methodName, true, 0, flags, //NOI18N
121
        MethodElement retval = new MethodElementImpl(type, methodName, true, 0, flags, //NOI18N
122
                type.getFilenameUrl(), null, fromParameterNames(arguments), Collections.<TypeResolver>emptySet(), type.isDeprecated());
122
                type.getFilenameUrl(), null, new ParametersImpl(fromParameterNames(arguments)), BaseFunctionElementSupport.ReturnTypes.NONE, type.isDeprecated());
123
        return retval;
123
        return retval;
124
    }
124
    }
125
125
Lines 159-165 Link Here
159
        if (matchesQuery(query, signParser)) {
159
        if (matchesQuery(query, signParser)) {
160
            retval = new MethodElementImpl(type, signParser.getMethodName(), false,
160
            retval = new MethodElementImpl(type, signParser.getMethodName(), false,
161
                    signParser.getOffset(), signParser.getFlags(), indexResult.getUrl().toString(),
161
                    signParser.getOffset(), signParser.getFlags(), indexResult.getUrl().toString(),
162
                    indexScopeQuery, signParser.getParameters(), signParser.getReturnTypes(), signParser.isDeprecated());
162
                    indexScopeQuery, new ParametersProxy(signParser), new ReturnTypesProxy(signParser), signParser.isDeprecated());
163
        }
163
        }
164
        return retval;
164
        return retval;
165
    }
165
    }
Lines 171-178 Link Here
171
        MethodDeclarationInfo info = MethodDeclarationInfo.create(fileQuery.getResult().getProgram(), node, type.isInterface());
171
        MethodDeclarationInfo info = MethodDeclarationInfo.create(fileQuery.getResult().getProgram(), node, type.isInterface());
172
        return new MethodElementImpl(
172
        return new MethodElementImpl(
173
                type, info.getName(), false, info.getRange().getStart(), info.getAccessModifiers().toFlags(),
173
                type, info.getName(), false, info.getRange().getStart(), info.getAccessModifiers().toFlags(),
174
                fileQuery.getURL().toExternalForm(), fileQuery, info.getParameters(),
174
                fileQuery.getURL().toExternalForm(), fileQuery, new ParametersImpl(info.getParameters()),
175
                TypeResolverImpl.parseTypes(VariousUtils.getReturnTypeFromPHPDoc(fileQuery.getResult().getProgram(), node.getFunction())),
175
                new ReturnTypesImpl(TypeResolverImpl.parseTypes(VariousUtils.getReturnTypeFromPHPDoc(fileQuery.getResult().getProgram(), node.getFunction()))),
176
                VariousUtils.isDeprecatedFromPHPDoc(fileQuery.getResult().getProgram(), node.getFunction()));
176
                VariousUtils.isDeprecatedFromPHPDoc(fileQuery.getResult().getProgram(), node.getFunction()));
177
    }
177
    }
178
178
Lines 197-203 Link Here
197
        final MethodSignatureParser signParser = new MethodSignatureParser(sig);
197
        final MethodSignatureParser signParser = new MethodSignatureParser(sig);
198
        final MethodElement retval = new MethodElementImpl(type, MethodElementImpl.CONSTRUCTOR_NAME, false,
198
        final MethodElement retval = new MethodElementImpl(type, MethodElementImpl.CONSTRUCTOR_NAME, false,
199
                signParser.getOffset(), signParser.getFlags(), indexResult.getUrl().toString(),
199
                signParser.getOffset(), signParser.getFlags(), indexResult.getUrl().toString(),
200
                indexScopeQuery, signParser.getParameters(), signParser.getReturnTypes(), signParser.isDeprecated());
200
                indexScopeQuery, new ParametersProxy(signParser), new ReturnTypesProxy(signParser), signParser.isDeprecated());
201
        return retval;
201
        return retval;
202
    }
202
    }
203
203
Lines 379-382 Link Here
379
            assert getParameters().size() == parser.getParameters().size();
379
            assert getParameters().size() == parser.getParameters().size();
380
        }
380
        }
381
    }
381
    }
382
383
    private static final class ParametersImpl implements BaseFunctionElementSupport.Parameters {
384
        private final List<ParameterElement> parameters;
385
386
        public ParametersImpl(List<ParameterElement> parameters) {
387
            this.parameters = parameters;
388
        }
389
390
        @Override
391
        public List<ParameterElement> getParameters() {
392
            return parameters;
393
        }
394
395
    }
396
397
    private static final class ParametersProxy implements BaseFunctionElementSupport.Parameters {
398
        private final MethodSignatureParser methodSignatureParser;
399
400
        public ParametersProxy(MethodSignatureParser methodSignatureParser) {
401
            this.methodSignatureParser = methodSignatureParser;
402
        }
403
404
        @Override
405
        public List<ParameterElement> getParameters() {
406
            return methodSignatureParser.getParameters();
407
        }
408
    }
409
410
    private static final class ReturnTypesImpl implements BaseFunctionElementSupport.ReturnTypes {
411
        private final Set<TypeResolver> returnTypes;
412
413
        public ReturnTypesImpl(Set<TypeResolver> returnTypes) {
414
            this.returnTypes = returnTypes;
415
        }
416
417
        @Override
418
        public Set<TypeResolver> getReturnTypes() {
419
            return returnTypes;
420
        }
421
422
    }
423
424
    private static final class ReturnTypesProxy implements BaseFunctionElementSupport.ReturnTypes {
425
        private final MethodSignatureParser methodSignatureParser;
426
427
        public ReturnTypesProxy(MethodSignatureParser methodSignatureParser) {
428
            this.methodSignatureParser = methodSignatureParser;
429
        }
430
431
        @Override
432
        public Set<TypeResolver> getReturnTypes() {
433
            return methodSignatureParser.getReturnTypes();
434
        }
435
436
    }
382
}
437
}

Return to bug 225603