You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by ni...@apache.org on 2019/03/11 21:41:24 UTC

[systemml] branch master updated: [MINOR] Throw a controlled exception when the expected number of inputs of UDF does not match the actual number of inputs

This is an automated email from the ASF dual-hosted git repository.

niketanpansare pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/systemml.git


The following commit(s) were added to refs/heads/master by this push:
     new a060f83  [MINOR] Throw a controlled exception when the expected number of inputs of UDF does not match the actual number of inputs
a060f83 is described below

commit a060f83f01b268a9fd0582517993d8ebdbe2848a
Author: Niketan Pansare <np...@us.ibm.com>
AuthorDate: Mon Mar 11 14:40:53 2019 -0700

    [MINOR] Throw a controlled exception when the expected number of inputs of UDF does not match the actual number of inputs
---
 .../org/apache/sysml/hops/ipa/InterProceduralAnalysis.java    | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
index 72aa9cb..213991e 100644
--- a/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
+++ b/src/main/java/org/apache/sysml/hops/ipa/InterProceduralAnalysis.java
@@ -529,6 +529,17 @@ public class InterProceduralAnalysis
 		ArrayList<Hop> inputOps = fop.getInput();
 		String fkey = fop.getFunctionKey();
 		
+		// Throw a controlled exception when the expected number of inputs doesnot match the actual number of inputs 
+		// instead of array out of bounds exception.
+		if(inputOps.size() != funArgNames.length) {
+			String argsList = funArgNames.length > 0 ? funArgNames[0] : "";
+			for( int i=1; i<funArgNames.length; i++ ) {
+				argsList += ", " + funArgNames[i];
+			}
+			throw new HopsException("The function definition has " + funArgNames.length 
+					+ " arguments (" + argsList + "), but the function invocation has " + inputOps.size() + " arguments.");
+		}
+		
 		for( int i=0; i<funArgNames.length; i++ )
 		{
 			//create mapping between input hops and vars