OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2013, the Dart project authors. | 2 * Copyright (c) 2013, the Dart project authors. |
3 * | 3 * |
4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u
se this file except | 4 * Licensed under the Eclipse Public License v1.0 (the "License"); you may not u
se this file except |
5 * in compliance with the License. You may obtain a copy of the License at | 5 * in compliance with the License. You may obtain a copy of the License at |
6 * | 6 * |
7 * http://www.eclipse.org/legal/epl-v10.html | 7 * http://www.eclipse.org/legal/epl-v10.html |
8 * | 8 * |
9 * Unless required by applicable law or agreed to in writing, software distribut
ed under the License | 9 * Unless required by applicable law or agreed to in writing, software distribut
ed under the License |
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K
IND, either express | 10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY K
IND, either express |
11 * or implied. See the License for the specific language governing permissions a
nd limitations under | 11 * or implied. See the License for the specific language governing permissions a
nd limitations under |
12 * the License. | 12 * the License. |
13 */ | 13 */ |
14 package com.google.dart.engine.services.completion; | 14 package com.google.dart.engine.services.completion; |
15 | 15 |
| 16 import com.google.common.base.Objects; |
16 import com.google.common.collect.Lists; | 17 import com.google.common.collect.Lists; |
17 import com.google.common.collect.Sets; | 18 import com.google.common.collect.Sets; |
18 import com.google.dart.engine.ast.ASTNode; | 19 import com.google.dart.engine.ast.ASTNode; |
19 import com.google.dart.engine.ast.Annotation; | 20 import com.google.dart.engine.ast.Annotation; |
20 import com.google.dart.engine.ast.ArgumentList; | 21 import com.google.dart.engine.ast.ArgumentList; |
21 import com.google.dart.engine.ast.AsExpression; | 22 import com.google.dart.engine.ast.AsExpression; |
22 import com.google.dart.engine.ast.AssertStatement; | 23 import com.google.dart.engine.ast.AssertStatement; |
23 import com.google.dart.engine.ast.AssignmentExpression; | 24 import com.google.dart.engine.ast.AssignmentExpression; |
24 import com.google.dart.engine.ast.BinaryExpression; | 25 import com.google.dart.engine.ast.BinaryExpression; |
25 import com.google.dart.engine.ast.Block; | 26 import com.google.dart.engine.ast.Block; |
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
816 ProposalCollector proposalRequestor = new ProposalCollector(requestor)
; | 817 ProposalCollector proposalRequestor = new ProposalCollector(requestor)
; |
817 try { | 818 try { |
818 requestor = proposalRequestor; | 819 requestor = proposalRequestor; |
819 dispatchPrefixAnalysis(invokeNode); | 820 dispatchPrefixAnalysis(invokeNode); |
820 } finally { | 821 } finally { |
821 requestor = proposalRequestor.getRequestor(); | 822 requestor = proposalRequestor.getRequestor(); |
822 } | 823 } |
823 int offset = methodName.getOffset(); | 824 int offset = methodName.getOffset(); |
824 int len = node.getRightParenthesis().getEnd() - offset; | 825 int len = node.getRightParenthesis().getEnd() - offset; |
825 for (CompletionProposal proposal : proposalRequestor.getProposals()) { | 826 for (CompletionProposal proposal : proposalRequestor.getProposals()) { |
826 pArgumentList(proposal, offset, len); | 827 if (Objects.equal(proposal.getElement(), invokeNode.getStaticElement
())) { |
| 828 pArgumentList(proposal, offset, len); |
| 829 } |
827 } | 830 } |
828 } | 831 } |
829 analyzeLocalName(new Ident(node)); | 832 analyzeLocalName(new Ident(node)); |
830 } | 833 } |
831 return null; | 834 return null; |
832 } | 835 } |
833 | 836 |
834 @Override | 837 @Override |
835 public Void visitAsExpression(AsExpression node) { | 838 public Void visitAsExpression(AsExpression node) { |
836 if (isCompletionAfter(node.getAsOperator().getEnd())) { | 839 if (isCompletionAfter(node.getAsOperator().getEnd())) { |
(...skipping 1528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2365 if (name.equals(conflict)) { | 2368 if (name.equals(conflict)) { |
2366 count += 1; | 2369 count += 1; |
2367 continue loop; | 2370 continue loop; |
2368 } | 2371 } |
2369 } | 2372 } |
2370 return name; | 2373 return name; |
2371 } | 2374 } |
2372 } | 2375 } |
2373 | 2376 |
2374 private void pArgumentList(CompletionProposal proposal, int offset, int len) { | 2377 private void pArgumentList(CompletionProposal proposal, int offset, int len) { |
| 2378 // prepare parameters |
| 2379 String[] parameterNames = proposal.getParameterNames(); |
| 2380 if (parameterNames.length == 0) { |
| 2381 return; |
| 2382 } |
| 2383 // fill arguments proposal |
2375 CompletionProposal prop = createProposal(ProposalKind.ARGUMENT_LIST); | 2384 CompletionProposal prop = createProposal(ProposalKind.ARGUMENT_LIST); |
| 2385 prop.setElement(proposal.getElement()); |
2376 prop.setCompletion(proposal.getCompletion()).setReturnType(proposal.getRetur
nType()); | 2386 prop.setCompletion(proposal.getCompletion()).setReturnType(proposal.getRetur
nType()); |
2377 prop.setParameterNames(proposal.getParameterNames()); | 2387 prop.setParameterNames(parameterNames); |
2378 prop.setParameterTypes(proposal.getParameterTypes()); | 2388 prop.setParameterTypes(proposal.getParameterTypes()); |
2379 prop.setParameterStyle( | 2389 prop.setParameterStyle( |
2380 proposal.getPositionalParameterCount(), | 2390 proposal.getPositionalParameterCount(), |
2381 proposal.hasNamed(), | 2391 proposal.hasNamed(), |
2382 proposal.hasPositional()); | 2392 proposal.hasPositional()); |
2383 prop.setReplacementLength(0).setLocation(completionLocation()); | 2393 prop.setReplacementLength(0).setLocation(completionLocation()); |
2384 prop.setRelevance(10); | 2394 prop.setRelevance(10); |
2385 requestor.accept(prop); | 2395 requestor.accept(prop); |
2386 } | 2396 } |
2387 | 2397 |
(...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2844 return null; | 2854 return null; |
2845 } | 2855 } |
2846 Iterator<Type> iter = matches.iterator(); | 2856 Iterator<Type> iter = matches.iterator(); |
2847 Type result = iter.next(); | 2857 Type result = iter.next(); |
2848 while (iter.hasNext()) { | 2858 while (iter.hasNext()) { |
2849 result = result.getLeastUpperBound(iter.next()); | 2859 result = result.getLeastUpperBound(iter.next()); |
2850 } | 2860 } |
2851 return result; | 2861 return result; |
2852 } | 2862 } |
2853 } | 2863 } |
OLD | NEW |