Merge pull request #1089 from mishadynin/input_value

Allow setting of initial value in the Input component.
diff --git a/packages/flutter/lib/sky_tool b/packages/flutter/lib/sky_tool
index a7d4b7a..1d5976e 100755
--- a/packages/flutter/lib/sky_tool
+++ b/packages/flutter/lib/sky_tool
@@ -248,9 +248,7 @@
             main_dart = os.path.join(project_or_path, 'lib', 'main.dart')
             missing_msg = 'Missing lib/main.dart in project: %s' % project_or_path
         else:
-            # FIXME: This assumes the path is at the root of the project!
-            # Instead we should walk up looking for a pubspec.yaml
-            sky_server_root = os.path.dirname(project_or_path)
+            sky_server_root = os.getcwd()
             main_dart = project_or_path
             missing_msg = '%s does not exist.' % main_dart
 
diff --git a/packages/flutter/lib/src/widgets/framework.dart b/packages/flutter/lib/src/widgets/framework.dart
index 1720c78..7b887a2 100644
--- a/packages/flutter/lib/src/widgets/framework.dart
+++ b/packages/flutter/lib/src/widgets/framework.dart
@@ -563,8 +563,7 @@
 
   void _sync(Widget old, dynamic slot) {
     assert(!_debugChildTaken);
-    Widget oldChild = (old as TagNode)?.child;
-    child = syncChild(child, oldChild, slot);
+    child = syncChild(child, (old as TagNode)?.child, slot);
     if (child != null) {
       assert(child.parent == this);
       assert(child.renderObject != null);
@@ -945,6 +944,12 @@
     fn();
     _scheduleBuild();
   }
+
+  String toStringName() {
+    if (_disqualifiedFromEverAppearingAgain)
+      return '[[DISQUALIFIED]] ${super.toStringName()}';
+    return super.toStringName();
+  }
 }
 
 Set<Component> _dirtyComponents = new Set<Component>();
@@ -1228,8 +1233,8 @@
           } else {
             syncChild(null, oldChild, null);
           }
-          oldChildrenBottom -= 1;
-        }
+        } // else the node was probably moved elsewhere, ignore it
+        oldChildrenBottom -= 1;
       }
     }