Merge pull request #611 from keertip/refs

fix refs for parameters
diff --git a/lib/src/model.dart b/lib/src/model.dart
index 357e5c8..e7e7d64 100644
--- a/lib/src/model.dart
+++ b/lib/src/model.dart
@@ -1367,8 +1367,13 @@
   Parameter(ParameterElement element, Library library)
       : super(element, library) {
     var t = _parameter.type;
-    _modelType = new ElementType(t, new ModelElement.from(
-        t.element, new Library(t.element.library, library.package)));
+    var lib;
+    lib = library.package.libraries.firstWhere(
+        (l) => l.hasInNamespace(t.element), orElse: () => null);
+    if (lib == null) {
+      lib = new Library(t.element.library, library.package);
+    }
+    _modelType = new ElementType(t, new ModelElement.from(t.element, lib));
   }
 
   ParameterElement get _parameter => element as ParameterElement;
diff --git a/test/model_test.dart b/test/model_test.dart
index b40b335..5520ee2 100644
--- a/test/model_test.dart
+++ b/test/model_test.dart
@@ -327,7 +327,7 @@
     });
 
     test('inherited methods', () {
-      expect(B.inheritedMethods, hasLength(2));
+      expect(B.inheritedMethods, hasLength(3));
       expect(B.hasInheritedMethods, isTrue);
     });
 
@@ -576,12 +576,13 @@
 
   group('Parameter', () {
     Class c, f;
-    Method isGreaterThan, asyncM, methodWithGenericParam;
+    Method isGreaterThan, asyncM, methodWithGenericParam, paramFromExportLib;
     Parameter p1;
 
     setUp(() {
       c = exLibrary.classes.firstWhere((c) => c.name == 'Apple');
       isGreaterThan = c.instanceMethods[2]; // isGreaterThan
+      paramFromExportLib = c.instanceMethods[3];
       asyncM = exLibrary.classes
               .firstWhere((c) => c.name == 'Dog').instanceMethods
           .firstWhere((m) => m.name == 'foo');
@@ -614,6 +615,11 @@
       var params = methodWithGenericParam.linkedParams();
       expect(params.contains('List') && params.contains('Apple'), isTrue);
     });
+
+    test('param exported in library', () {
+      var param = paramFromExportLib.parameters[0];
+      expect(param.library.name, equals('ex'));
+    });
   });
 
   group('Implementors', () {
diff --git a/test_package/lib/example.dart b/test_package/lib/example.dart
index 7ab4aab..dfa7f19 100644
--- a/test_package/lib/example.dart
+++ b/test_package/lib/example.dart
@@ -1,6 +1,7 @@
 /// a library. testing string escaping: `var s = 'a string'` <cool>
 library ex;
 
+import 'src/mylib.dart' show Helper;
 export 'src/mylib.dart' show Helper;
 export 'dart:core' show DateTime;
 
@@ -47,6 +48,8 @@
   bool isGreaterThan(int number, {int check: 5}) {
     return number > check;
   }
+
+  void paramFromExportLib(Helper helper) {}
 }
 /// Extends class [Apple], use [new Apple] or [new Apple.fromString]
 class B extends Apple with Cat {