Index: Source/Expr.cobra
===================================================================
--- Source/Expr.cobra	(revision 2349)
+++ Source/Expr.cobra	(working copy)
@@ -744,6 +744,9 @@
 				break
 			assert arg.didBindImp
 			assert param.didBindInt
+			# chk any IN/OUT/INOUT settings are synchronised
+			if not param.matchLabel(arg.argumentLabel)
+				arg.recordError('Argument [i+1] of method "[_name]" expects a parameter labelled as ([param.kind]), but the call is supplying a label of ([arg.argumentLabel]).')
 			if arg.canBeAssignedTo(param.type)
 				arg.contextType = param.type
 			else if param.type inherits GenericParam
@@ -766,7 +769,7 @@
 					arg.recordError('Argument [i+1] of method "[_name]" expects a non-nilable type ([param.type.name]), but the call is supplying a nilable type ([arg.type.name]).')
 				else
 					arg.recordError('Argument [i+1] of method "[_name]" expects type [param.type.name], but the call is supplying type [arg.type.name].')
-
+					
 	def toCobraSource as String is override
 		sb = StringBuilder()
 		sb.append(_name)
Index: Source/Vars.cobra
===================================================================
--- Source/Vars.cobra	(revision 2349)
+++ Source/Vars.cobra	(working copy)
@@ -215,8 +215,19 @@
 				attrib.bindImp
 			catch ne as NodeException
 				.compiler.recordError(ne)
-
-
+				
+	def matchLabel(label as ArgumentLabel) as bool
+		""" Verify argumentLabel from method argument matches parameter kind """
+		isValid = false
+		branch label 
+			on ArgumentLabel.None
+				isValid = .kind == .KindEnum.Value
+			on ArgumentLabel.Out
+				isValid = .kind == .KindEnum.Out
+			on ArgumentLabel.InOut
+				isValid = .kind == .KindEnum.InOut
+		return isValid
+			
 class LocalVar inherits AbstractLocalVar is partial
 
 	cue init(token as IToken, type as IType)
Index: Tests/120-classes/955-inout-mismatch.cobra
===================================================================
--- Tests/120-classes/955-inout-mismatch.cobra	(revision 0)
+++ Tests/120-classes/955-inout-mismatch.cobra	(revision 0)
@@ -0,0 +1,37 @@
+# Test cobra catches mismatch on (in)/out/inout labels between args and params
+class InOutMismatch
+
+	def foo(x as inout int)
+		x = 5
+		
+	def bar(x as out int)
+		x = 15
+	
+	def baz(x as int)
+		pass		
+		
+	def main
+		y = 0
+		.foo(y)	# .error. supplying a label of (None).
+		assert y == 5
+		.foo(out y) # .error. supplying a label of (Out).
+		assert y == 5
+		.foo(inout y) # OK
+		assert y == 5
+		
+		z = 0
+		.bar(z)	# .error. supplying a label of (None).
+		assert z == 15
+		.bar(inout z) # .error. supplying a label of (InOut).
+		assert z == 15
+		.bar(out z)		# OK
+		assert z == 15
+	
+		x = 0
+		.baz(x)	# OK
+		assert x == 0
+		.baz(out x)		# .error. supplying a label of (Out).
+		assert x == 0
+		.baz(inout x) # .error. supplying a label of (InOut).
+		assert x == 0
+		
Index: Developer/IntermediateReleaseNotes.text
===================================================================
--- Developer/IntermediateReleaseNotes.text	(revision 2346)
+++ Developer/IntermediateReleaseNotes.text	(working copy)
@@ -451,3 +451,5 @@
 * Fixed: References to local variables in `ensure` are not flagged as errors.  ticket:198
 
 * Fixed: Cannot directly refer to an open generic type such as `t = List<of>`.  ticket:192
+
+* Fixed: Missing inout gets C# error message rather thn cobra error message.  ticket:199

